## read a character from stdin == 0x08048054 # code segment, after leaving room for ELF header # opcode ModR/M SIB displacement immediate # instruction mod, reg, Reg/Mem bits scale, index, base # 1-3 bytes 0/1 byte 0/1 byte 0/1/2/4 bytes 0/1/2/4 bytes # 0: e_entry = 0x08048054 ## read(1, x, 1) # fd = 1 bb 1/imm32 # copy 1 to EBX # set location to write to b9 00 90 04 08 # copy 0x08040000 to ECX # size = 1 character ba 1/imm32 # copy 1 to EDX # syscall = read b8 3/imm32 # copy 3 to EAX # call cd 128/imm8 # int 80h ## exit(EBX) b8 1/imm32 # copy 1 to EAX cd 128/imm8 # int 80h # vim:ft=subx:nowrap