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.
ADSP-219x Radare2 Plugin
Native architecture plugin for disassembling ADSP-219x (including ADSP-2191) 24-bit instructions in radare2 and iaito.
Build & Install
make
make install
Requires: GCC, radare2 >= 5.8.0 (RArchPlugin API).
Usage
r2 -a adsp219x -b 24 firmware.bin
Validation
Compare against the assembler-verified test ROM:
r2 -a adsp219x -b 24 -q -c "pd 48" ../examples/isa_test.bin
The test ROM (isa_test.dsp) was assembled with open21xx and
contains known opcodes for all major instruction types.
Coding Standards
This plugin follows the GNU Coding Standards for C source code. No hardcoded absolute paths in any scripts.