Files
adsp219x-re/r2plugin
Dr. Christian Giessen dbcf04eb62 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.
2026-04-22 19:57:35 +00:00
..

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.