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:
Binary file not shown.
Reference in New Issue
Block a user