From ee9a9237d6324f1de1bb7150083eacf7b9af5f70 Mon Sep 17 00:00:00 2001 From: Kartik Agaram Date: Fri, 30 Nov 2018 11:10:44 -0800 Subject: 4802 Some automated commenting cleanup. Still needs more careful manual scanning. sed -i 's/^# 1-3/# . 1-3/' *.subx */*.subx sed -i 's/^# op/# . op/' *.subx */*.subx sed -i 's/# vim/# . . vim/' *.subx */*.subx sed -i 's/^ # push args/ # . . push args/' *.subx */*.subx sed -i 's/^ # discard args/ # . . discard args/' *.subx */*.subx sed -i 's/^ # call/ # . . call/' *.subx */*.subx sed -i 's/^ # prolog/ # . prolog/' *.subx */*.subx sed -i 's/^ # epilog/ # . epilog/' *.subx */*.subx sed -i 's/^ # save registers/ # . save registers/' *.subx */*.subx sed -i 's/^ # restore registers/ # . restore registers/' *.subx */*.subx sed -i 's/ operand / register /' *.subx */*.subx --- subx/059read-byte.subx | 118 ++++++++++++++++++++++++------------------------- 1 file changed, 59 insertions(+), 59 deletions(-) (limited to 'subx/059read-byte.subx') diff --git a/subx/059read-byte.subx b/subx/059read-byte.subx index da99eed3..39d818f4 100644 --- a/subx/059read-byte.subx +++ b/subx/059read-byte.subx @@ -27,9 +27,9 @@ Stdin: # TODO: 8 bytes is too small. We'll need to grow the buffer for efficiency. == code -# instruction effective address operand displacement immediate -# 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 +# instruction effective address register displacement immediate +# . 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 # main: e8/call run-tests/disp32 # 'run-tests' is a function created automatically by SubX. It calls all functions that start with 'test-'. @@ -42,10 +42,10 @@ Stdin: # return next byte value in EAX, with top 3 bytes cleared. # On EOF, return 0xffffffff. read-byte: # f : (address buffered-file) -> byte/EAX - # prolog + # . prolog 55/push-EBP 89/copy 3/mod/direct 5/rm32/EBP . . . 4/r32/ESP . . # copy ESP to EBP - # save registers + # . save registers 51/push-ECX 56/push-ESI # ESI = f @@ -56,20 +56,20 @@ read-byte: # f : (address buffered-file) -> byte/EAX 3b/compare 1/mod/*+disp8 6/rm32/ESI . . . 1/r32/ECX 4/disp8 . # compare ECX with *(ESI+4) 7c/jump-if-lesser $read-byte:from-stream/disp8 # clear-stream(stream = f+4) - # push args + # . . push args 8d/copy-address 1/mod/*+disp8 6/rm32/ESI . . . 0/r32/EAX 4/disp8 . # copy ESI+4 to EAX 50/push-EAX - # call + # . . call e8/call clear-stream/disp32 - # discard args + # . . discard args 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 4/imm32 # add to ESP # EAX = read(f->fd, stream = f+4) - # push args + # . . push args 50/push-EAX ff 6/subop/push 0/mod/indirect 6/rm32/ESI . . . . . . # push *ESI - # call + # . . call e8/call read/disp32 - # discard args + # . . discard args 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 8/imm32 # add to ESP # if EAX = 0 return 0xffffffff 81 7/subop/compare 3/mod/direct 0/rm32/EAX . . . . . 0/imm32 # compare EAX @@ -83,10 +83,10 @@ $read-byte:from-stream: # ++f->read ff 0/subop/increment 1/mod/*+disp8 6/rm32/ESI . . . . 8/disp8 . # increment *(ESI+8) $read-byte:end: - # restore registers + # . restore registers 5e/pop-to-ESI 59/pop-to-ECX - # epilog + # . epilog 89/copy 3/mod/direct 4/rm32/ESP . . . 5/r32/EBP . . # copy EBP to ESP 5d/pop-to-EBP c3/return @@ -99,44 +99,44 @@ $read-byte:end: test-read-byte-single: ## check that read-byte returns first byte of 'file' # clear-stream(_test-stream) - # push args + # . . push args 68/push _test-stream/imm32 - # call + # . . call e8/call clear-stream/disp32 - # discard args + # . . discard args 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 4/imm32 # add to ESP # clear-stream(_test-buffered-file+4) - # push args + # . . push args b8/copy-to-EAX _test-buffered-file/imm32 05/add-to-EAX 4/imm32 50/push-EAX - # call + # . . call e8/call clear-stream/disp32 - # discard args + # . . discard args 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 4/imm32 # add to ESP # write(_test-stream, "Ab") - # push args + # . . push args 68/push "Ab"/imm32 68/push _test-stream/imm32 - # call + # . . call e8/call write/disp32 - # discard args + # . . discard args 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 8/imm32 # add to ESP # read-byte(_test-buffered-file) - # push args + # . . push args 68/push _test-buffered-file/imm32 - # call + # . . call e8/call read-byte/disp32 - # discard args + # . . discard args 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 4/imm32 # add to ESP # check-ints-equal(EAX, 'A') - # push args + # . . push args 68/push "F - test-read-byte-single"/imm32 68/push 0x41/imm32 50/push-EAX - # call + # . . call e8/call check-ints-equal/disp32 - # discard args + # . . discard args 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 0xc/imm32 # add to ESP # end c3/return @@ -144,51 +144,51 @@ test-read-byte-single: test-read-byte-multiple: ## call read-byte twice, check that second call returns second byte # clear-stream(_test-stream) - # push args + # . . push args 68/push _test-stream/imm32 - # call + # . . call e8/call clear-stream/disp32 - # discard args + # . . discard args 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 4/imm32 # add to ESP # clear-stream(_test-buffered-file+4) - # push args + # . . push args b8/copy-to-EAX _test-buffered-file/imm32 05/add-to-EAX 4/imm32 50/push-EAX - # call + # . . call e8/call clear-stream/disp32 - # discard args + # . . discard args 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 4/imm32 # add to ESP # write(_test-stream, "Ab") - # push args + # . . push args 68/push "Ab"/imm32 68/push _test-stream/imm32 - # call + # . . call e8/call write/disp32 - # discard args + # . . discard args 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 8/imm32 # add to ESP # read-byte(_test-buffered-file) - # push args + # . . push args 68/push _test-buffered-file/imm32 - # call + # . . call e8/call read-byte/disp32 - # discard args + # . . discard args 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 4/imm32 # add to ESP # read-byte(_test-buffered-file) - # push args + # . . push args 68/push _test-buffered-file/imm32 - # call + # . . call e8/call read-byte/disp32 - # discard args + # . . discard args 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 4/imm32 # add to ESP # check-ints-equal(EAX, 'b') - # push args + # . . push args 68/push "F - test-read-byte-multiple"/imm32 68/push 0x62/imm32 50/push-EAX - # call + # . . call e8/call check-ints-equal/disp32 - # discard args + # . . discard args 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 0xc/imm32 # add to ESP # end c3/return @@ -196,36 +196,36 @@ test-read-byte-multiple: test-read-byte-end-of-file: ## call read-byte on an empty 'file', check that it returns -1 # clear-stream(_test-stream) - # push args + # . . push args 68/push _test-stream/imm32 - # call + # . . call e8/call clear-stream/disp32 - # discard args + # . . discard args 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 4/imm32 # add to ESP # clear-stream(_test-buffered-file+4) - # push args + # . . push args b8/copy-to-EAX _test-buffered-file/imm32 05/add-to-EAX 4/imm32 50/push-EAX - # call + # . . call e8/call clear-stream/disp32 - # discard args + # . . discard args 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 4/imm32 # add to ESP # read-byte(_test-buffered-file) - # push args + # . . push args 68/push _test-buffered-file/imm32 - # call + # . . call e8/call read-byte/disp32 - # discard args + # . . discard args 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 4/imm32 # add to ESP # check-ints-equal(EAX, -1) - # push args + # . . push args 68/push "F - test-read-byte-end-of-file"/imm32 68/push -1/imm32 50/push-EAX - # call + # . . call e8/call check-ints-equal/disp32 - # discard args + # . . discard args 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 0xc/imm32 # add to ESP # end c3/return @@ -244,4 +244,4 @@ _test-buffered-file: # data 00 00 00 00 00 00 00 00 # 8 bytes -# vim:nowrap:textwidth=0 +# . . vim:nowrap:textwidth=0 -- cgit 1.4.1-2-gfad0