From d1c9894306598e83186f28de36c29bc0bd96c023 Mon Sep 17 00:00:00 2001 From: Kartik Agaram Date: Mon, 28 Dec 2020 15:29:29 -0800 Subject: [PATCH] 7445 --- apps/survey_elf | Bin 56701 -> 56298 bytes apps/survey_elf.subx | 185 ------------------------------------------- 2 files changed, 185 deletions(-) diff --git a/apps/survey_elf b/apps/survey_elf index 67808f4911f977199c5ad7f76d2f3c2bcf23da04..6a9257c60cde8325a2b7f5b7d2944641fbf847db 100755 GIT binary patch delta 19073 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 literal 56701 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[in->write] - # . eax = in->write - 8b/copy 0/mod/indirect 6/rm32/esi . . . 0/r32/eax . . # copy *esi to eax - # . eax = esi+eax+12 - 8d/copy-address 1/mod/*+disp8 4/rm32/sib 6/base/esi 0/index/eax . 0/r32/eax 0xc/disp8 . # copy esi+eax+12 to eax - # max/edx = &in->data[in->size] - # . edx = in->size - 8b/copy 1/mod/*+disp8 6/rm32/esi . . . 2/r32/edx 8/disp8 . # copy *(esi+8) to edx - # . edx = esi+edx+12 - 8d/copy-address 1/mod/*+disp8 4/rm32/sib 6/base/esi 2/index/edx . 2/r32/edx 0xc/disp8 . # copy esi+edx+12 to edx - # if (curr >= max) abort - 39/compare 3/mod/direct 0/rm32/eax . . . 2/r32/edx . . # compare eax with edx - 73/jump-if-addr>= $stream-add4:abort/disp8 - # *curr = key - 8b/copy 1/mod/*+disp8 5/rm32/ebp . . 1/r32/ecx 0xc/disp8 . # copy *(ebp+12) to ecx - 89/copy 0/mod/indirect 0/rm32/eax . . . 1/r32/ecx . . # copy ecx to *eax - # curr += 4 - 05/add-to-eax 4/imm32 - # if (curr >= max) abort - 39/compare 3/mod/direct 0/rm32/eax . . . 2/r32/edx . . # compare eax with edx - 73/jump-if-addr>= $stream-add4:abort/disp8 - # *curr = val1 - 8b/copy 1/mod/*+disp8 5/rm32/ebp . . 1/r32/ecx 0x10/disp8 . # copy *(ebp+16) to ecx - 89/copy 0/mod/indirect 0/rm32/eax . . . 1/r32/ecx . . # copy ecx to *eax - # curr += 4 - 05/add-to-eax 4/imm32 - # if (curr >= max) abort - 39/compare 3/mod/direct 0/rm32/eax . . . 2/r32/edx . . # compare eax with edx - 73/jump-if-addr>= $stream-add4:abort/disp8 - # *curr = val2 - 8b/copy 1/mod/*+disp8 5/rm32/ebp . . 1/r32/ecx 0x14/disp8 . # copy *(ebp+20) to ecx - 89/copy 0/mod/indirect 0/rm32/eax . . . 1/r32/ecx . . # copy ecx to *eax - # curr += 4 - 05/add-to-eax 4/imm32 - # if (curr >= max) abort - 39/compare 3/mod/direct 0/rm32/eax . . . 2/r32/edx . . # compare eax with edx - 73/jump-if-addr>= $stream-add4:abort/disp8 - # *curr = val3 - 8b/copy 1/mod/*+disp8 5/rm32/ebp . . 1/r32/ecx 0x18/disp8 . # copy *(ebp+24) to ecx - 89/copy 0/mod/indirect 0/rm32/eax . . . 1/r32/ecx . . # copy ecx to *eax - # in->write += 16 - 81 0/subop/add 0/mod/indirect 6/rm32/esi . . . . . 0x10/imm32 # add to *esi -$stream-add4:end: - # . restore registers - 5e/pop-to-esi - 5a/pop-to-edx - 59/pop-to-ecx - 58/pop-to-eax - # . epilogue - 89/copy 3/mod/direct 4/rm32/esp . . . 5/r32/ebp . . # copy ebp to esp - 5d/pop-to-ebp - c3/return - -$stream-add4:abort: - # . _write(2/stderr, error) - # . . push args - 68/push "overflow in stream-add4\n"/imm32 - 68/push 2/imm32/stderr - # . . call - e8/call _write/disp32 - # . . discard args - 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp - # . syscall(exit, 1) - bb/copy-to-ebx 1/imm32 - e8/call syscall_exit/disp32 - # never gets here - stream-add5: # in: (addr stream byte), key: handle, val1: addr, val2: addr, val3: addr # . prologue 55/push-ebp @@ -3707,113 +3629,6 @@ test-trace-sssns: 5d/pop-to-ebp c3/return -trace-snsns: # s1: (addr array byte), n2: int, s3: (addr array byte), n4: int, s5: (addr array byte) - # . prologue - 55/push-ebp - 89/copy 3/mod/direct 5/rm32/ebp . . . 4/r32/esp . . # copy esp to ebp - # write(*Trace-stream, s1) - # . . push args - ff 6/subop/push 1/mod/*+disp8 5/rm32/ebp . . . . 8/disp8 . # push *(ebp+8) - ff 6/subop/push 0/mod/indirect 5/rm32/.disp32 . . . Trace-stream/disp32 # push *Trace-stream - # . . call - e8/call write/disp32 - # . . discard args - 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp - # write-int32-hex(*Trace-stream, n2) - # . . push args - ff 6/subop/push 1/mod/*+disp8 5/rm32/ebp . . . . 0xc/disp8 . # push *(ebp+12) - ff 6/subop/push 0/mod/indirect 5/rm32/.disp32 . . . Trace-stream/disp32 # push *Trace-stream - # . . call - e8/call write-int32-hex/disp32 - # . . discard args - 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp - # write(*Trace-stream, s3) - # . . push args - ff 6/subop/push 1/mod/*+disp8 5/rm32/ebp . . . . 0x10/disp8 . # push *(ebp+16) - ff 6/subop/push 0/mod/indirect 5/rm32/.disp32 . . . Trace-stream/disp32 # push *Trace-stream - # . . call - e8/call write/disp32 - # . . discard args - 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp - # write-int32-hex(*Trace-stream, n4) - # . . push args - ff 6/subop/push 1/mod/*+disp8 5/rm32/ebp . . . . 0x14/disp8 . # push *(ebp+20) - ff 6/subop/push 0/mod/indirect 5/rm32/.disp32 . . . Trace-stream/disp32 # push *Trace-stream - # . . call - e8/call write-int32-hex/disp32 - # . . discard args - 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp - # trace(s5) # implicitly adds a newline and finalizes the trace line - # . . push args - ff 6/subop/push 1/mod/*+disp8 5/rm32/ebp . . . . 0x18/disp8 . # push *(ebp+24) - # . . call - e8/call trace/disp32 - # . . discard args - 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp -$trace-snsns:end: - # . 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: - # . prologue - 55/push-ebp - 89/copy 3/mod/direct 5/rm32/ebp . . . 4/r32/esp . . # copy esp to ebp - # setup - # . *Trace-stream->write = 0 - 8b/copy 0/mod/indirect 5/rm32/.disp32 . . 0/r32/eax Trace-stream/disp32 # copy *Trace-stream to eax - c7 0/subop/copy 0/mod/direct 0/rm32/eax . . . . . 0/imm32 # clear *eax - # trace-snsns("A " 2 " c " 3 " e") - # . . push args - 68/push " e"/imm32 - 68/push 3/imm32 - 68/push " c "/imm32 - 68/push 2/imm32 - 68/push "A "/imm32 - # . . call - e8/call trace-snsns/disp32 - # . . discard args - 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 0x14/imm32 # add to esp -#? # dump *Trace-stream {{{ -#? # . write(2/stderr, "^") -#? # . . push args -#? 68/push "^"/imm32 -#? 68/push 2/imm32/stderr -#? # . . call -#? e8/call write/disp32 -#? # . . discard args -#? 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp -#? # . write-stream(2/stderr, *Trace-stream) -#? # . . push args -#? ff 6/subop/push 0/mod/indirect 5/rm32/.disp32 . . . Trace-stream/disp32 # push *Trace-stream -#? 68/push 2/imm32/stderr -#? # . . call -#? e8/call write-stream/disp32 -#? # . . discard args -#? 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp -#? # . write(2/stderr, "$\n") -#? # . . push args -#? 68/push "$\n"/imm32 -#? 68/push 2/imm32/stderr -#? # . . call -#? e8/call write/disp32 -#? # . . discard args -#? 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp -#? # }}} - # check-trace-contains("Abc 0x00000003 e") - # . . push args - 68/push "F - test-trace-snsns"/imm32 - 68/push "A 0x00000002 c 0x00000003 e"/imm32 - # . . call - e8/call check-trace-contains/disp32 - # . . discard args - 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp - # . 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: (addr array byte), l2: (addr slice), s3: (addr array byte), l4: (addr slice), s5: (addr array byte) # . prologue 55/push-ebp