Files
adsp219x-re/r2plugin
Dr. Christian Giessen 91172e86d8 Fix analysis: remove early return, add eob for branches
The decoder had an early return when mask lacked DISASM, causing
op->type/jump/eob to never be set during analysis passes.
Removed the early return so all decode paths execute regardless
of requested mask.

Added op->eob = true for:
- Unconditional JUMP (Type 10a, 36)
- Unconditional indirect JUMP (Type 19)
- RTS/RTI (Type 20)

Added op->fail for:
- Conditional JUMP (Type 10)
- Conditional indirect jump (Type 19)

This fixes function analysis (af), basic block detection (afb),
and control flow graphing (agf/VV). Tested: isa_test.bin now
shows 5 basic blocks with correct control flow edges.
2026-04-27 12:01:49 +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).

The Makefile also provides make test, which builds the plugin and runs a smoke test against ../examples/isa_test.bin.

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

Or run the local plugin without installing it:

make test

The test ROM (isa_test.dsp) was assembled with open21xx and contains known opcodes for all major instruction types.

For the current verification matrix and remaining structural-only types, see TESTING.md.

Coding Standards

This plugin follows the GNU Coding Standards for C source code. No hardcoded absolute paths in any scripts.