Fix Types 3, 4, 29, 32; add relative addressing; truncation guards

Type 3: Fix D-bit read/write direction (was always write).
  DM-only (no PM), use reg1[] for Ireg/Mreg variant.
Type 4: Add D-bit for read vs write direction (was always read).
  Properly distinguish DM(I+=M)=Dreg vs Dreg=DM(I+=M).
Type 29: G selects DAG register group, not memory bus.
  Always DM (was incorrectly PM when G=1).
Type 32: MS selects bus (DM/PM), G selects DAG group only.
  (was: MS||G for bus, causing false PM on G=1 MS=0).
Type 10/10a/11: Relative offsets resolved to absolute byte addresses
  using PC + (offset * 3). op->jump set for r2 xref analysis.
Type 36: op->jump set for LJUMP/LCALL.
2-word instructions: Truncation guard when buffer < 6 bytes.
  Emits 'trunc ...' instead of decoding with zeroed second word.
Zero warnings, full regression pass on isa_test/fir/iir.
This commit is contained in:
Dr. Christian Giessen
2026-04-22 19:57:35 +00:00
parent adfc7b34b4
commit dbcf04eb62
2 changed files with 93 additions and 31 deletions

Binary file not shown.