diff options
author | Kartik Agaram <vc@akkartik.com> | 2019-07-18 22:57:48 -0700 |
---|---|---|
committer | Kartik Agaram <vc@akkartik.com> | 2019-07-18 23:24:49 -0700 |
commit | 8da4c8c3006c7d60d92a951a2a096449dc398e68 (patch) | |
tree | 27a77c1659f6ea05c3d88fd06c24fc9ad0fd4780 /subx/examples | |
parent | 5030d67c85f63fc09ee506a90394c50f2db4f3be (diff) | |
download | mu-8da4c8c3006c7d60d92a951a2a096449dc398e68.tar.gz |
5416
Figured out what's going in with bug fourteen: displacement operands aren't always used relative to the PC. Does this mean I need to track instruction boundaries past pack? :'( No, I just need different logic for labels in code vs data segments. This was an interesting bug for reminding me of the difference between the emulator-level trace and the application-level trace. The former has 1.5 million lines, while the latter has a dozen. Luckily, just dumping the latter immediately made obvious what the issue was. Though this experience does suggest some further ideas for debugging tools: slice trace by line and phase slice trace by start and end label debug UI for SubX translator 2D layout: rows = lines of code; columns = translator phases each 'cell' in this layout contains a list of log lines shows what came in, what was emitted easily collapse any cell These are domain-specific tools. Special-cased to the SubX translator phases.
Diffstat (limited to 'subx/examples')
-rw-r--r-- | subx/examples/ex6.subx | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/subx/examples/ex6.subx b/subx/examples/ex6.subx index a90f11df..d690d378 100644 --- a/subx/examples/ex6.subx +++ b/subx/examples/ex6.subx @@ -17,6 +17,7 @@ Entry: # . initialize X (location to write result to) b9/copy-to-ECX X/imm32 # . initialize Size +# HERE 8b/copy 0/mod/indirect 5/rm32/.disp32 . . 2/r32/EDX Size/disp32 . # copy *Size to EDX # . syscall b8/copy-to-EAX 4/imm32/write |