diff options
Diffstat (limited to 'subx/examples/ex7.subx')
-rw-r--r-- | subx/examples/ex7.subx | 58 |
1 files changed, 29 insertions, 29 deletions
diff --git a/subx/examples/ex7.subx b/subx/examples/ex7.subx index d5956ec9..841daf61 100644 --- a/subx/examples/ex7.subx +++ b/subx/examples/ex7.subx @@ -16,78 +16,78 @@ # 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 # creat(filename) - bb/copy . . . . . . . filename/imm32 # copy to EBX - b9/copy . . . . . . . 0x180/imm32/fixed-perms # copy to ECX - b8/copy . . . . . . . 8/imm32/creat # copy to EAX + bb/copy-to-EBX filename/imm32 + b9/copy-to-ECX 0x180/imm32/fixed-perms + b8/copy-to-EAX 8/imm32/creat cd/syscall 0x80/imm8 # stream = open(filename, O_WRONLY, 0) # we can't use 'fd' because it looks like a hex byte - bb/copy . . . . . . . filename/imm32 # copy to EBX - b9/copy . . . . . . . 1/imm32/wronly # copy to ECX - ba/copy . . . . . . . 0x180/imm32/fixed-perms # copy to EDX - b8/copy . . . . . . . 5/imm32/open # copy to EAX + bb/copy-to-EBX filename/imm32 + b9/copy-to-ECX 1/imm32/wronly + ba/copy-to-EDX 0x180/imm32/fixed-perms + b8/copy-to-EAX 5/imm32/open cd/syscall 0x80/imm8 # save stream - bb/copy . . . . . . . stream/imm32 # copy to EBX + bb/copy-to-EBX stream/imm32 89/copy 0/mod/indirect 3/rm32/EBX 0/r32/EAX # copy EAX to *EBX # write(stream, "a", 1) # load stream - bb/copy . . . . . . . stream/imm32 # copy to EBX + bb/copy-to-EBX stream/imm32 8b/copy 0/mod/indirect 3/rm32/EBX 3/r32/EBX # copy *EBX to EBX # - b9/copy . . . . . . . a/imm32 # copy to ECX - ba/copy . . . . . . . 1/imm32/size # copy to EDX - b8/copy . . . . . . . 4/imm32/write # copy to EAX + b9/copy-to-ECX a/imm32 + ba/copy-to-EDX 1/imm32/size + b8/copy-to-EAX 4/imm32/write cd/syscall 0x80/imm8 # close(stream) # load stream - bb/copy . . . . . . . stream/imm32 # copy to EBX + bb/copy-to-EBX stream/imm32 8b/copy 0/mod/indirect 3/rm32/EBX 3/r32/EBX # copy *EBX to EBX # - b8/copy . . . . . . . 6/imm32/close # copy to EAX + b8/copy-to-EAX 6/imm32/close cd/syscall 0x80/imm8 # stream = open(filename, O_RDONLY, 0) - bb/copy . . . . . . . filename/imm32 # copy to EBX - b9/copy . . . . . . . 0/imm32/rdonly # copy to ECX - ba/copy . . . . . . . 0x180/imm32/fixed-perms # copy to EDX - b8/copy . . . . . . . 5/imm32/open # copy to EAX + bb/copy-to-EBX filename/imm32 + b9/copy-to-ECX 0/imm32/rdonly + ba/copy-to-EDX 0x180/imm32/fixed-perms + b8/copy-to-EAX 5/imm32/open cd/syscall 0x80/imm8 # save stream - bb/copy . . . . . . . stream/imm32 # copy to EBX + bb/copy-to-EBX stream/imm32 89/copy 0/mod/indirect 3/rm32/EBX 0/r32/EAX # copy EAX to *EBX # read(stream, b, 1) # load stream - bb/copy . . . . . . . stream/imm32 # copy to EBX + bb/copy-to-EBX stream/imm32 8b/copy 0/mod/indirect 3/rm32/EBX 3/r32/EBX # copy *EBX to EBX # - b9/copy . . . . . . . b/imm32 # copy to ECX - ba/copy . . . . . . . 1/imm32/size # copy to EDX - b8/copy . . . . . . . 3/imm32/read # copy to EAX + b9/copy-to-ECX b/imm32 + ba/copy-to-EDX 1/imm32/size + b8/copy-to-EAX 3/imm32/read cd/syscall 0x80/imm8 # close(stream) # load stream - bb/copy . . . . . . . stream/imm32 # copy to EBX + bb/copy-to-EBX stream/imm32 8b/copy 0/mod/indirect 3/rm32/EBX 3/r32/EBX # copy *EBX to EBX # - b8/copy . . . . . . . 6/imm32/close # copy to EAX + b8/copy-to-EAX 6/imm32/close cd/syscall 0x80/imm8 # unlink(filename) - bb/copy . . . . . . . filename/imm32 # copy to EBX - b8/copy . . . . . . . 0xa/imm32/unlink # copy to EAX + bb/copy-to-EBX filename/imm32 + b8/copy-to-EAX 0xa/imm32/unlink cd/syscall 0x80/imm8 # exit(b) # load b - bb/copy . . . . . . . b/imm32 # copy to EBX + bb/copy-to-EBX b/imm32 8b/copy 0/mod/indirect 3/rm32/EBX 3/r32/EBX # copy *EBX to EBX # - b8/copy . . . . . . . 1/imm32/exit # copy to EAX + b8/copy-to-EAX 1/imm32/exit cd/syscall 0x80/imm8 == data |