diff options
Diffstat (limited to 'subx/examples/ex5.subx')
-rw-r--r-- | subx/examples/ex5.subx | 24 |
1 files changed, 12 insertions, 12 deletions
diff --git a/subx/examples/ex5.subx b/subx/examples/ex5.subx index 400e17c3..a0bb9d48 100644 --- a/subx/examples/ex5.subx +++ b/subx/examples/ex5.subx @@ -9,36 +9,36 @@ # op subop mod rm32 base index scale r32 # 1-3 bytes 3 bits 2 bits 3 bits 3 bits 3 bits 2 bits 2 bits 0/1/2/4 bytes 0/1/2/4 bytes -## function main +# main: # prolog 55/push # push EBP 89/copy 3/mod/direct 5/rm32/EBP 4/r32/ESP # copy ESP to EBP # allocate x on the stack 81 5/subop/subtract 3/mod/direct 4/rm32/ESP 4/imm32 # subtract 4 bytes from ESP - ## read(stdin, x, 1) - # fd = 0 (stdin) + # read(stdin, x, 1) + # fd = 0 (stdin) bb/copy 0/imm32 # copy 0 to EBX - # initialize x (location to write result to) + # initialize x (location to write result to) 89/copy 3/mod/direct 1/rm32/ECX 5/r32/EBP # copy EBP to ECX - # size = 1 character + # size = 1 character ba/copy 1/imm32 # copy 1 to EDX - # read(fd, x, size) + # read(fd, x, size) b8/copy 3/imm32 # copy 3 to EAX cd/syscall 0x80/imm8 # int 80h - ## write(stdout, x, 1) - # fd = 1 (stdout) + # write(stdout, x, 1) + # fd = 1 (stdout) bb/copy 1/imm32 # copy 1 to EBX - # initialize x (location to read from) + # initialize x (location to read from) 89/copy 3/mod/direct 1/rm32/ECX 5/r32/EBP # copy EBP to ECX - # size = 1 character + # size = 1 character ba/copy 1/imm32 # copy 1 to EDX - # write(fd, x, size) + # write(fd, x, size) b8/copy 4/imm32 # copy 4 to EAX cd/syscall 0x80/imm8 # int 80h - ## exit(EBX) + # exit(EBX) b8/copy 1/imm32 # copy 1 to EAX cd/syscall 0x80/imm8 # int 80h |