diff options
author | Kartik Agaram <vc@akkartik.com> | 2019-08-12 23:18:31 -0700 |
---|---|---|
committer | Kartik Agaram <vc@akkartik.com> | 2019-08-12 23:18:31 -0700 |
commit | 15a84e24497c107cc1572e8e85115d37179d83f4 (patch) | |
tree | 5f7222de61a308b6e9214ad6bd550890a6101b14 /apps/survey.subx | |
parent | 94d68ac2444b24ddac693c5d0a06c82c07c4bc25 (diff) | |
download | mu-15a84e24497c107cc1572e8e85115d37179d83f4.tar.gz |
better error message when get aborts
Diffstat (limited to 'apps/survey.subx')
-rw-r--r-- | apps/survey.subx | 19 |
1 files changed, 11 insertions, 8 deletions
diff --git a/apps/survey.subx b/apps/survey.subx index 14f4eb55..4345b3ec 100644 --- a/apps/survey.subx +++ b/apps/survey.subx @@ -1435,7 +1435,7 @@ compute-addresses: # segments : (address stream {string, segment-info}), labels # while true # if (lrow >= max) break # seg-name : (address string) = lrow->segment-name - # label-seg : (address segment-info) = get(segments, seg-name, row-size=16) + # label-seg : (address segment-info) = get(segments, seg-name) # lrow->address = label-seg->address + lrow->segment-offset # trace-sssns("label " lrow->key " is at address " lrow->address) # lrow += 16 # row-size @@ -1589,18 +1589,19 @@ $compute-addresses:label-loop: #? # . . discard args #? 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 8/imm32 # add to ESP #? # }}} - # label-seg/EDX : (address segment-info) = get(segments, seg-name, row-size=16) + # label-seg/EDX : (address segment-info) = get(segments, seg-name, row-size=16, "segment table") # . save EAX 50/push-EAX # . EAX = get(segments, seg-name, row-size=16) # . . push args + 68/push "segment table"/imm32 68/push 0x10/imm32/row-size 52/push-EDX ff 6/subop/push 1/mod/*+disp8 5/rm32/EBP . . . . 8/disp8 . # push *(EBP+8) # . . call e8/call get/disp32 # . . discard args - 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 0xc/imm32 # add to ESP + 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 0x10/imm32 # add to ESP # . EDX = EAX 89/copy 3/mod/direct 2/rm32/EDX . . . 0/r32/EAX . . # copy EAX to EDX # . restore EAX @@ -2264,16 +2265,17 @@ $emit-segments:check-metadata: #? # . . discard args #? 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 8/imm32 # add to ESP #? # }}} - # info/ESI = get-slice(labels, datum, row-size=16) - # . EAX = get-slice(labels, datum, row-size=16) + # info/ESI = get-slice(labels, datum, row-size=16, "label table") + # . EAX = get-slice(labels, datum, row-size=16, "label table") # . . push args + 68/push "label table"/imm32 68/push 0x10/imm32/row-size 57/push-EDI ff 6/subop/push 1/mod/*+disp8 5/rm32/EBP . . . . 0x14/disp8 . # push *(EBP+20) # . . call e8/call get-slice/disp32 # . . discard args - 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 0xc/imm32 # add to ESP + 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 0x10/imm32 # add to ESP # . ESI = EAX 89/copy 3/mod/direct 6/rm32/ESI . . . 0/r32/EAX . . # copy EAX to ESI $emit-segments:check-global-variable: @@ -3377,15 +3379,16 @@ emit-elf-header: # out : (address buffered-file), segments : (address stream {s # *Elf_e_entry = get(labels, "Entry")->address # . EAX = labels 8b/copy 1/mod/*+disp8 5/rm32/EBP . . . 0/r32/EAX 0x10/disp8 . # copy *(EBP+16) to EAX - # . label-info/EAX = get(labels, "Entry", row-size=16) + # . label-info/EAX = get(labels, "Entry", row-size=16, "label table") # . . push args + 68/push "label table"/imm32 68/push 0x10/imm32/row-size 68/push "Entry"/imm32 50/push-EAX # . . call e8/call get/disp32 # . . discard args - 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 0xc/imm32 # add to ESP + 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 0x10/imm32 # add to ESP # . EAX = label-info->address 8b/copy 1/mod/*+disp8 0/rm32/EAX . . . 0/r32/EAX 8/disp8 . # copy *(EAX+8) to EAX # . *Elf_e_entry = EAX |