diff options
Diffstat (limited to 'apps/survey.subx')
-rw-r--r-- | apps/survey.subx | 138 |
1 files changed, 69 insertions, 69 deletions
diff --git a/apps/survey.subx b/apps/survey.subx index b943fe72..08e7775a 100644 --- a/apps/survey.subx +++ b/apps/survey.subx @@ -42,7 +42,7 @@ # . 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 Entry: # run tests if necessary, convert stdin if not - # . prolog + # . prologue 89/copy 3/mod/direct 5/rm32/ebp . . . 4/r32/esp . . # copy esp to ebp # Heap = new-segment(Heap-size) @@ -124,7 +124,7 @@ subx-survey: # infile : (address buffered-file), out : (address buffered-file) # rewind-stream(in) # emit-output(in, out, segments, labels) # - # . prolog + # . prologue 55/push-ebp 89/copy 3/mod/direct 5/rm32/ebp . . . 4/r32/esp . . # copy esp to ebp # . save registers @@ -447,7 +447,7 @@ $subx-survey:end: 5e/pop-to-esi 5a/pop-to-edx 59/pop-to-ecx - # . epilog + # . epilogue 89/copy 3/mod/direct 4/rm32/esp . . . 5/r32/ebp . . # copy ebp to esp 5d/pop-to-ebp c3/return @@ -467,7 +467,7 @@ test-subx-survey-computes-addresses: # segment code has size 5 # segment data starts at address 0x1079 # - # . prolog + # . prologue 55/push-ebp 89/copy 3/mod/direct 5/rm32/ebp . . . 4/r32/esp . . # copy esp to ebp # setup @@ -619,7 +619,7 @@ test-subx-survey-computes-addresses: e8/call check-trace-contains/disp32 # . . discard args 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp - # . epilog + # . epilogue 89/copy 3/mod/direct 4/rm32/esp . . . 5/r32/ebp . . # copy ebp to esp 5d/pop-to-ebp c3/return @@ -694,7 +694,7 @@ compute-offsets: # in : (address stream), segments : (address stream {string, s # *segment-offset += width # *file-offset += width # - # . prolog + # . prologue 55/push-ebp 89/copy 3/mod/direct 5/rm32/ebp . . . 4/r32/esp . . # copy esp to ebp # . save registers @@ -1212,7 +1212,7 @@ $compute-offsets:end: 5a/pop-to-edx 59/pop-to-ecx 58/pop-to-eax - # . epilog + # . epilogue 89/copy 3/mod/direct 4/rm32/esp . . . 5/r32/ebp . . # copy ebp to esp 5d/pop-to-ebp c3/return @@ -1249,7 +1249,7 @@ test-compute-offsets: # label 'x' is in segment 'data'. # label 'x' is at segment offset 0x1. # - # . prolog + # . prologue 55/push-ebp 89/copy 3/mod/direct 5/rm32/ebp . . . 4/r32/esp . . # copy esp to ebp # setup @@ -1414,7 +1414,7 @@ test-compute-offsets: e8/call check-ints-equal/disp32 # . . discard args 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 0xc/imm32 # add to esp - # . epilog + # . epilogue 89/copy 3/mod/direct 4/rm32/esp . . . 5/r32/ebp . . # copy ebp to esp 5d/pop-to-ebp c3/return @@ -1442,7 +1442,7 @@ compute-addresses: # segments : (address stream {string, segment-info}), labels # trace-sssns("label " lrow->key " is at address " lrow->address) # lrow += 16 # row-size # - # . prolog + # . prologue 55/push-ebp 89/copy 3/mod/direct 5/rm32/ebp . . . 4/r32/esp . . # copy esp to ebp # . save registers @@ -1636,7 +1636,7 @@ $compute-addresses:end: 5a/pop-to-edx 59/pop-to-ecx 58/pop-to-eax - # . epilog + # . epilogue 89/copy 3/mod/direct 4/rm32/esp . . . 5/r32/ebp . . # copy ebp to esp 5d/pop-to-ebp c3/return @@ -1658,7 +1658,7 @@ test-compute-addresses: # label 'l1' is at address 0x00001097. (0x1094 + segment-offset 3) # label 'l2' is at address 0x00002099. (0x2099 + segment-offset 0) # - # . prolog + # . prologue 55/push-ebp 89/copy 3/mod/direct 5/rm32/ebp . . . 4/r32/esp . . # copy esp to ebp # setup @@ -1809,7 +1809,7 @@ test-compute-addresses: e8/call check-ints-equal/disp32 # . . discard args 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 0xc/imm32 # add to esp - # . epilog + # . epilogue 89/copy 3/mod/direct 4/rm32/esp . . . 5/r32/ebp . . # copy ebp to esp 5d/pop-to-ebp c3/return @@ -1827,7 +1827,7 @@ test-compute-addresses-large-segments: # segment 'b' starts at address 0x00002678. (0x018 discarded; last 3 nibbles from 0x1074 + 0x5604) # label 'l1' is at address 0x00001077. (0x1074 + segment-offset 3) # - # . prolog + # . prologue 55/push-ebp 89/copy 3/mod/direct 5/rm32/ebp . . . 4/r32/esp . . # copy esp to ebp # setup @@ -1907,7 +1907,7 @@ test-compute-addresses-large-segments: e8/call check-trace-contains/disp32 # . . discard args 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp - # . epilog + # . epilogue 89/copy 3/mod/direct 4/rm32/esp . . . 5/r32/ebp . . # copy ebp to esp 5d/pop-to-ebp c3/return @@ -1917,7 +1917,7 @@ emit-output: # in : (address stream), out : (address buffered-file), segments : # emit-headers(out, segments, labels) # emit-segments(in, out, segments, labels) # - # . prolog + # . prologue 55/push-ebp 89/copy 3/mod/direct 5/rm32/ebp . . . 4/r32/esp . . # copy esp to ebp #? # write(2/stderr, "emit-headers\n") {{{ @@ -1958,7 +1958,7 @@ emit-output: # in : (address stream), out : (address buffered-file), segments : # . . discard args 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 0x10/imm32 # add to esp $emit-output:end: - # . epilog + # . epilogue 89/copy 3/mod/direct 4/rm32/esp . . . 5/r32/ebp . . # copy ebp to esp 5d/pop-to-ebp c3/return @@ -2018,7 +2018,7 @@ emit-segments: # in : (address stream), out : (address buffered-file), segments # info: esi (inner loop only) # temporaries: eax, esi (outer loop) # - # . prolog + # . prologue 55/push-ebp 89/copy 3/mod/direct 5/rm32/ebp . . . 4/r32/esp . . # copy esp to ebp # . save registers @@ -2503,7 +2503,7 @@ $emit-segments:end: 5a/pop-to-edx 59/pop-to-ecx 58/pop-to-eax - # . epilog + # . epilogue 89/copy 3/mod/direct 4/rm32/esp . . . 5/r32/ebp . . # copy ebp to esp 5d/pop-to-ebp c3/return @@ -2593,7 +2593,7 @@ test-emit-segments-global-variable: # 00 # 34 # - # . prolog + # . prologue 55/push-ebp 89/copy 3/mod/direct 5/rm32/ebp . . . 4/r32/esp . . # copy esp to ebp # setup @@ -2807,7 +2807,7 @@ test-emit-segments-global-variable: e8/call check-next-stream-line-equal/disp32 # . . discard args 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 0xc/imm32 # add to esp - # . epilog + # . epilogue 89/copy 3/mod/direct 4/rm32/esp . . . 5/r32/ebp . . # copy ebp to esp 5d/pop-to-ebp c3/return @@ -2832,7 +2832,7 @@ test-emit-segments-code-label: # ef gh # ij f9 ff ff ff # -7 # - # . prolog + # . prologue 55/push-ebp 89/copy 3/mod/direct 5/rm32/ebp . . . 4/r32/esp . . # copy esp to ebp # setup @@ -3011,7 +3011,7 @@ test-emit-segments-code-label: e8/call check-next-stream-line-equal/disp32 # . . discard args 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 0xc/imm32 # add to esp - # . epilog + # . epilogue 89/copy 3/mod/direct 4/rm32/esp . . . 5/r32/ebp . . # copy ebp to esp 5d/pop-to-ebp c3/return @@ -3036,7 +3036,7 @@ test-emit-segments-code-label-absolute: # ef gh # ij 56 10 00 00 # - # . prolog + # . prologue 55/push-ebp 89/copy 3/mod/direct 5/rm32/ebp . . . 4/r32/esp . . # copy esp to ebp # setup @@ -3215,7 +3215,7 @@ test-emit-segments-code-label-absolute: e8/call check-next-stream-line-equal/disp32 # . . discard args 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 0xc/imm32 # add to esp - # . epilog + # . epilogue 89/copy 3/mod/direct 4/rm32/esp . . . 5/r32/ebp . . # copy ebp to esp 5d/pop-to-ebp c3/return @@ -3230,7 +3230,7 @@ emit-headers: # out : (address buffered-file), segments : (address stream {stri # emit-elf-program-header-entry(out, curr-segment) # curr-segment += 16 # size of a row # - # . prolog + # . prologue 55/push-ebp 89/copy 3/mod/direct 5/rm32/ebp . . . 4/r32/esp . . # copy esp to ebp # . save registers @@ -3359,7 +3359,7 @@ $emit-headers:end: # . restore registers 59/pop-to-ecx 58/pop-to-eax - # . epilog + # . epilogue 89/copy 3/mod/direct 4/rm32/esp . . . 5/r32/ebp . . # copy ebp to esp 5d/pop-to-ebp c3/return @@ -3371,7 +3371,7 @@ emit-elf-header: # out : (address buffered-file), segments : (address stream {s # emit-hex-array(out, Elf_header) # write-buffered(out, "\n") # - # . prolog + # . prologue 55/push-ebp 89/copy 3/mod/direct 5/rm32/ebp . . . 4/r32/esp . . # copy esp to ebp # . save registers @@ -3427,7 +3427,7 @@ $emit-elf-header:end: 5a/pop-to-edx 59/pop-to-ecx 58/pop-to-eax - # . epilog + # . epilogue 89/copy 3/mod/direct 4/rm32/esp . . . 5/r32/ebp . . # copy ebp to esp 5d/pop-to-ebp c3/return @@ -3446,7 +3446,7 @@ emit-elf-program-header-entry: # out : (address buffered-file), curr-segment : # emit-hex-array(out, Elf_program_header_entry) # write-buffered(out, "\n") # - # . prolog + # . prologue 55/push-ebp 89/copy 3/mod/direct 5/rm32/ebp . . . 4/r32/esp . . # copy esp to ebp # . save registers @@ -3514,7 +3514,7 @@ $emit-elf-program-header-entry:end: # . restore registers 5e/pop-to-esi 58/pop-to-eax - # . epilog + # . epilogue 89/copy 3/mod/direct 4/rm32/esp . . . 5/r32/ebp . . # copy ebp to esp 5d/pop-to-ebp c3/return @@ -3522,7 +3522,7 @@ $emit-elf-program-header-entry:end: # - some helpers for tests stream-add4: # in : (address stream byte), key : address, val1 : address, val2 : address, val3 : address - # . prolog + # . prologue 55/push-ebp 89/copy 3/mod/direct 5/rm32/ebp . . . 4/r32/esp . . # copy esp to ebp # . save registers @@ -3580,7 +3580,7 @@ $stream-add4:end: 5a/pop-to-edx 59/pop-to-ecx 58/pop-to-eax - # . epilog + # . epilogue 89/copy 3/mod/direct 4/rm32/esp . . . 5/r32/ebp . . # copy ebp to esp 5d/pop-to-ebp c3/return @@ -3608,7 +3608,7 @@ $stream-add4:abort: # one gotcha: 's5' must not be empty trace-sssns: # s1 : (address string), s2 : (address string), s3 : (address string), n4 : int, s5 : (address string) - # . prolog + # . prologue 55/push-ebp 89/copy 3/mod/direct 5/rm32/ebp . . . 4/r32/esp . . # copy esp to ebp # write(*Trace-stream, s1) @@ -3651,13 +3651,13 @@ trace-sssns: # s1 : (address string), s2 : (address string), s3 : (address stri # . . discard args 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp $trace-sssns:end: - # . epilog + # . epilogue 89/copy 3/mod/direct 4/rm32/esp . . . 5/r32/ebp . . # copy ebp to esp 5d/pop-to-ebp c3/return test-trace-sssns: - # . prolog + # . prologue 55/push-ebp 89/copy 3/mod/direct 5/rm32/ebp . . . 4/r32/esp . . # copy esp to ebp # setup @@ -3709,13 +3709,13 @@ test-trace-sssns: e8/call check-trace-contains/disp32 # . . discard args 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp - # . epilog + # . epilogue 89/copy 3/mod/direct 4/rm32/esp . . . 5/r32/ebp . . # copy ebp to esp 5d/pop-to-ebp c3/return trace-snsns: # s1 : (address string), n2 : int, s3 : (address string), n4 : int, s5 : (address string) - # . prolog + # . prologue 55/push-ebp 89/copy 3/mod/direct 5/rm32/ebp . . . 4/r32/esp . . # copy esp to ebp # write(*Trace-stream, s1) @@ -3758,13 +3758,13 @@ trace-snsns: # s1 : (address string), n2 : int, s3 : (address string), n4 : int # . . discard args 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp $trace-snsns:end: - # . epilog + # . epilogue 89/copy 3/mod/direct 4/rm32/esp . . . 5/r32/ebp . . # copy ebp to esp 5d/pop-to-ebp c3/return test-trace-snsns: - # . prolog + # . prologue 55/push-ebp 89/copy 3/mod/direct 5/rm32/ebp . . . 4/r32/esp . . # copy esp to ebp # setup @@ -3816,13 +3816,13 @@ test-trace-snsns: e8/call check-trace-contains/disp32 # . . discard args 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp - # . epilog + # . epilogue 89/copy 3/mod/direct 4/rm32/esp . . . 5/r32/ebp . . # copy ebp to esp 5d/pop-to-ebp c3/return trace-slsls: # s1 : (address string), l2 : (address slice), s3 : (address string), l4 : (address slice), s5 : (address string) - # . prolog + # . prologue 55/push-ebp 89/copy 3/mod/direct 5/rm32/ebp . . . 4/r32/esp . . # copy esp to ebp # write(*Trace-stream, s1) @@ -3865,13 +3865,13 @@ trace-slsls: # s1 : (address string), l2 : (address slice), s3 : (address strin # . . discard args 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp $trace-slsls:end: - # . epilog + # . epilogue 89/copy 3/mod/direct 4/rm32/esp . . . 5/r32/ebp . . # copy ebp to esp 5d/pop-to-ebp c3/return test-trace-slsls: - # . prolog + # . prologue 55/push-ebp 89/copy 3/mod/direct 5/rm32/ebp . . . 4/r32/esp . . # copy esp to ebp # setup @@ -3941,13 +3941,13 @@ test-trace-slsls: e8/call check-trace-contains/disp32 # . . discard args 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp - # . epilog + # . epilogue 89/copy 3/mod/direct 4/rm32/esp . . . 5/r32/ebp . . # copy ebp to esp 5d/pop-to-ebp c3/return trace-slsns: # s1 : (address string), l2 : (address slice), s3 : (address string), n4 : int, s5 : (address string) - # . prolog + # . prologue 55/push-ebp 89/copy 3/mod/direct 5/rm32/ebp . . . 4/r32/esp . . # copy esp to ebp # write(*Trace-stream, s1) @@ -3990,13 +3990,13 @@ trace-slsns: # s1 : (address string), l2 : (address slice), s3 : (address strin # . . discard args 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp $trace-slsns:end: - # . epilog + # . epilogue 89/copy 3/mod/direct 4/rm32/esp . . . 5/r32/ebp . . # copy ebp to esp 5d/pop-to-ebp c3/return test-trace-slsns: - # . prolog + # . prologue 55/push-ebp 89/copy 3/mod/direct 5/rm32/ebp . . . 4/r32/esp . . # copy esp to ebp # setup @@ -4057,13 +4057,13 @@ test-trace-slsns: e8/call check-trace-contains/disp32 # . . discard args 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp - # . epilog + # . epilogue 89/copy 3/mod/direct 4/rm32/esp . . . 5/r32/ebp . . # copy ebp to esp 5d/pop-to-ebp c3/return trace-slsss: # s1 : (address string), l2 : (address slice), s3 : (address string), s4 : (address string), s5 : (address string) - # . prolog + # . prologue 55/push-ebp 89/copy 3/mod/direct 5/rm32/ebp . . . 4/r32/esp . . # copy esp to ebp # write(*Trace-stream, s1) @@ -4106,13 +4106,13 @@ trace-slsss: # s1 : (address string), l2 : (address slice), s3 : (address strin # . . discard args 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp $trace-slsss:end: - # . epilog + # . epilogue 89/copy 3/mod/direct 4/rm32/esp . . . 5/r32/ebp . . # copy ebp to esp 5d/pop-to-ebp c3/return test-trace-slsss: - # . prolog + # . prologue 55/push-ebp 89/copy 3/mod/direct 5/rm32/ebp . . . 4/r32/esp . . # copy esp to ebp # setup @@ -4173,7 +4173,7 @@ test-trace-slsss: e8/call check-trace-contains/disp32 # . . discard args 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp - # . epilog + # . epilogue 89/copy 3/mod/direct 4/rm32/esp . . . 5/r32/ebp . . # copy ebp to esp 5d/pop-to-ebp c3/return @@ -4194,7 +4194,7 @@ num-bytes: # line : (address stream) -> eax : int # result += compute-width(word-slice) # return result # - # . prolog + # . prologue 55/push-ebp 89/copy 3/mod/direct 5/rm32/ebp . . . 4/r32/esp . . # copy esp to ebp # . save registers @@ -4376,14 +4376,14 @@ $num-bytes:end: 5b/pop-to-ebx 5a/pop-to-edx 59/pop-to-ecx - # . epilog + # . epilogue 89/copy 3/mod/direct 4/rm32/esp . . . 5/r32/ebp . . # copy ebp to esp 5d/pop-to-ebp c3/return test-num-bytes-handles-empty-string: # if a line starts with '#', return 0 - # . prolog + # . prologue 55/push-ebp 89/copy 3/mod/direct 5/rm32/ebp . . . 4/r32/esp . . # copy esp to ebp # setup @@ -4418,14 +4418,14 @@ test-num-bytes-handles-empty-string: e8/call check-ints-equal/disp32 # . . discard args 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 0xc/imm32 # add to esp - # . epilog + # . epilogue 89/copy 3/mod/direct 4/rm32/esp . . . 5/r32/ebp . . # copy ebp to esp 5d/pop-to-ebp c3/return test-num-bytes-ignores-comments: # if a line starts with '#', return 0 - # . prolog + # . prologue 55/push-ebp 89/copy 3/mod/direct 5/rm32/ebp . . . 4/r32/esp . . # copy esp to ebp # setup @@ -4468,14 +4468,14 @@ test-num-bytes-ignores-comments: e8/call check-ints-equal/disp32 # . . discard args 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 0xc/imm32 # add to esp - # . epilog + # . epilogue 89/copy 3/mod/direct 4/rm32/esp . . . 5/r32/ebp . . # copy ebp to esp 5d/pop-to-ebp c3/return test-num-bytes-ignores-labels: # if the first word ends with ':', return 0 - # . prolog + # . prologue 55/push-ebp 89/copy 3/mod/direct 5/rm32/ebp . . . 4/r32/esp . . # copy esp to ebp # setup @@ -4518,14 +4518,14 @@ test-num-bytes-ignores-labels: e8/call check-ints-equal/disp32 # . . discard args 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 0xc/imm32 # add to esp - # . epilog + # . epilogue 89/copy 3/mod/direct 4/rm32/esp . . . 5/r32/ebp . . # copy ebp to esp 5d/pop-to-ebp c3/return test-num-bytes-ignores-segment-headers: # if the first word is '==', return 0 - # . prolog + # . prologue 55/push-ebp 89/copy 3/mod/direct 5/rm32/ebp . . . 4/r32/esp . . # copy esp to ebp # setup @@ -4568,14 +4568,14 @@ test-num-bytes-ignores-segment-headers: e8/call check-ints-equal/disp32 # . . discard args 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 0xc/imm32 # add to esp - # . epilog + # . epilogue 89/copy 3/mod/direct 4/rm32/esp . . . 5/r32/ebp . . # copy ebp to esp 5d/pop-to-ebp c3/return test-num-bytes-counts-words-by-default: # without metadata, count words - # . prolog + # . prologue 55/push-ebp 89/copy 3/mod/direct 5/rm32/ebp . . . 4/r32/esp . . # copy esp to ebp # setup @@ -4618,14 +4618,14 @@ test-num-bytes-counts-words-by-default: e8/call check-ints-equal/disp32 # . . discard args 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 0xc/imm32 # add to esp - # . epilog + # . epilogue 89/copy 3/mod/direct 4/rm32/esp . . . 5/r32/ebp . . # copy ebp to esp 5d/pop-to-ebp c3/return test-num-bytes-ignores-trailing-comment: # trailing comments appropriately ignored - # . prolog + # . prologue 55/push-ebp 89/copy 3/mod/direct 5/rm32/ebp . . . 4/r32/esp . . # copy esp to ebp # setup @@ -4668,14 +4668,14 @@ test-num-bytes-ignores-trailing-comment: e8/call check-ints-equal/disp32 # . . discard args 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 0xc/imm32 # add to esp - # . epilog + # . epilogue 89/copy 3/mod/direct 4/rm32/esp . . . 5/r32/ebp . . # copy ebp to esp 5d/pop-to-ebp c3/return test-num-bytes-handles-imm32: # if a word has the /imm32 metadata, count it as 4 bytes - # . prolog + # . prologue 55/push-ebp 89/copy 3/mod/direct 5/rm32/ebp . . . 4/r32/esp . . # copy esp to ebp # setup @@ -4718,7 +4718,7 @@ test-num-bytes-handles-imm32: e8/call check-ints-equal/disp32 # . . discard args 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 0xc/imm32 # add to esp - # . epilog + # . epilogue 89/copy 3/mod/direct 4/rm32/esp . . . 5/r32/ebp . . # copy ebp to esp 5d/pop-to-ebp c3/return |