diff options
author | Kartik Agaram <vc@akkartik.com> | 2019-07-10 11:57:08 -0700 |
---|---|---|
committer | Kartik Agaram <vc@akkartik.com> | 2019-07-10 11:57:08 -0700 |
commit | 538f24c296f6ddd0688c3d312db08cfe48919cdd (patch) | |
tree | 6c8d788920f69fc51da6986f0250a6f22b0883db | |
parent | 551112ff88c9ebc8b4058351bdc53b6914bfa0de (diff) | |
download | mu-538f24c296f6ddd0688c3d312db08cfe48919cdd.tar.gz |
.
-rwxr-xr-x | subx/apps/survey | bin | 39564 -> 39573 bytes | |||
-rw-r--r-- | subx/apps/survey.subx | 10 |
2 files changed, 7 insertions, 3 deletions
diff --git a/subx/apps/survey b/subx/apps/survey index 1c70d7a5..e50905f4 100755 --- a/subx/apps/survey +++ b/subx/apps/survey Binary files differdiff --git a/subx/apps/survey.subx b/subx/apps/survey.subx index dcdfe659..26d863cb 100644 --- a/subx/apps/survey.subx +++ b/subx/apps/survey.subx @@ -354,8 +354,8 @@ compute-offsets: # in : (address buffered-file), segments : (address stream {st # if slice-starts-with?(word-slice, "#") # comment # continue # if is-label?(word-slice) - # x : (address number) = get-or-insert(labels, name) - # *x = segment-offset + # x : (address label-info) = get-or-insert(labels, name) + # x->segment-offset = segment-offset # trace("label '", word-slice, "' is in segment '", curr-segment-name, "'") # trace("label '", word-slice, "' is at offset 0x", file-offset) # # labels occupy no space, so no need to increment offsets @@ -474,7 +474,11 @@ $compute-offsets:label: e8/call get-or-insert-slice/disp32 # . . discard args 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 0xc/imm32 # add to ESP - # TODO: *x = segment-offset + # x->segment-offset = segment-offset + # . EBX = segment-offset + 8f 0/subop/pop 0/mod/indirect 5/rm32/.disp32 . . . compute-offsets:segment-offset/disp32 + # . x->segment-offset = EBX + 89/copy 1/mod/*+disp8 0/rm32/EAX . . . 3/r32/EBX 4/disp8 . # copy EBX to *(EAX+4) # trace-slsls("label '" word-slice/EDX "' is in segment '" current-segment-name "'") # . . push args 68/push "'"/imm32 |