about summary refs log tree commit diff stats
path: root/subx/examples
diff options
context:
space:
mode:
authorKartik Agaram <vc@akkartik.com>2019-07-18 22:57:48 -0700
committerKartik Agaram <vc@akkartik.com>2019-07-18 23:24:49 -0700
commit8da4c8c3006c7d60d92a951a2a096449dc398e68 (patch)
tree27a77c1659f6ea05c3d88fd06c24fc9ad0fd4780 /subx/examples
parent5030d67c85f63fc09ee506a90394c50f2db4f3be (diff)
downloadmu-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.subx1
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