From 58c643c2c2ab227142977ee24108b0dcdd2cda39 Mon Sep 17 00:00:00 2001 From: Kartik Agaram Date: Sat, 13 Jul 2019 15:43:32 -0700 Subject: [PATCH] fixed fifth bug, hit sixth --- subx/apps/survey | Bin 40160 -> 40163 bytes subx/apps/survey.subx | 11 ++++++----- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/subx/apps/survey b/subx/apps/survey index cb80f099817763492f39f7fcf55df13b4bcfa084..0a9ad45ce57bbe8770110807cfbc173b8efead20 100755 GIT binary patch delta 14581 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 delta 14640 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 YdtZIDrfuI|I--H5o!fqWdata + segments->write # while true # if (curr-segment >= max) break - # emit-elf-program-header-entry(curr-segment) + # emit-elf-program-header-entry(out, curr-segment) # curr-segment += 20 # size of a row # # . prolog @@ -2474,13 +2474,14 @@ $emit-headers:loop: #? # . . discard args #? 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 8/imm32 # add to ESP #? # }}} - # emit-elf-program-header-entry(curr-segment) + # emit-elf-program-header-entry(out, curr-segment) # . . push args 50/push-EAX + ff 6/subop/push 1/mod/*+disp8 5/rm32/EBP . . . . 8/disp8 . # push *(EBP+8) # . . call e8/call emit-elf-program-header-entry/disp32 # . . discard args - 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 4/imm32 # add to ESP + 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 8/imm32 # add to ESP # curr-segment += 20 # size of a row 81 0/subop/add 3/mod/direct 0/rm32/EAX . . . . . 0x14/imm32 # add to EAX e9/jump $emit-headers:loop/disp32 @@ -2551,7 +2552,7 @@ $emit-elf-header:end: 5d/pop-to-EBP c3/return -emit-elf-program-header-entry: # curr-segment : (address {string, segment-info}) +emit-elf-program-header-entry: # out : (address buffered-file), curr-segment : (address {string, segment-info}) # pseudocode: # *Elf_p_offset = curr-segment->file-offset # *Elf_p_vaddr = curr-segment->address @@ -2571,7 +2572,7 @@ emit-elf-program-header-entry: # curr-segment : (address {string, segment-info} 50/push-EAX 56/push-ESI # ESI = curr-segment - 8b/copy 1/mod/*+disp8 5/rm32/EBP . . . 6/r32/ESI 8/disp8 . # copy *(EBP+8) to ESI + 8b/copy 1/mod/*+disp8 5/rm32/EBP . . . 6/r32/ESI 0xc/disp8 . # copy *(EBP+12) to ESI # *Elf_p_offset = curr-segment->file-offset # . EAX = curr-segment->file-offset 8b/copy 1/mod/*+disp8 6/rm32/ESI . . . 0/r32/EAX 8/disp8 . # copy *(ESI+8) to EAX