Tool

rabbitizer

MIPS instruction decoder written in C that never allocates on the heap, with Python, C++ and Rust bindings in the same repository and the stated aim of producing matching assembly. It decodes one instruction word at a time, focusing on MIPS I to III with partial MIPS IV support, and also handles the N64 RSP, the PlayStation's R3000 GTE, the PSP's R4000 Allegrex and the PS2's R5900; it offers validation checks, instruction-grouping queries, configurable pseudo-instructions and register names, and small helpers for building pointer and symbol detection. Matching-decompilation tooling builds on it: splat and spimdisasm both list it as a Python dependency.

Targets
Binary · Game
Category
Binary analysis libraries
Relationship
Foundation tool
Sources reviewed

Requirements & limits

  • Latest stable release at review: 1.16.2, published 2026-05-29 on GitHub, PyPI and crates.io, which matches the reviewed 1.x commit. A 2.0.0 alpha series (2.0.0-alpha.9, 2026-05-20) is published from a separate Rust branch that was not reviewed; splat and spimdisasm both pin versions below 2.0.0.
  • Install with pip install rabbitizer or cargo add rabbitizer. The README gives Python 3.9 as the minimum, although pyproject.toml still declares >=3.4, and building the Python bindings from source needs the Python development headers. The C and C++ libraries build with make and clang (C11 and C++17), and the Rust crate declares Rust 1.66.0. Instruction tables for every binding are generated from templates in tables/, and CI checks that the generated files are current.
  • Input is raw 32-bit instruction words, so callers must take code from their own binaries, choose the CPU variant and handle addresses and symbols themselves. Pseudo-instructions that expand to more than one instruction are deliberately unsupported; the README says output should match, reports that RSP output reassembles to matching code with armips, and calls MIPS IV support partial.
  • GitHub Actions build the C code with warnings as errors on Ubuntu 22.04 and run build-info, logic and instruction checks, and Python unit tests run on Linux, macOS and Windows; tests/asm holds assembly samples for the GTE, Allegrex and R5900. Nothing was built or run in this review. The README's reference list points to third-party CPU manuals and documentation hosted elsewhere, which are not part of this record.
  • MIT. The reviewed sources establish no REA connection.

About this entry

The description was reviewed against primary sources. This does not establish runtime testing, security auditing or verified compatibility.

Report an outdated entry Suggest a translation fix

Primary sources

  1. README.md GitHub · Decompollaborate/rabbitizer · Revision 724a49a
  2. CHANGELOG.md GitHub · Decompollaborate/rabbitizer · Revision 724a49a
  3. pyproject.toml GitHub · Decompollaborate/rabbitizer · Revision 724a49a
  4. Cargo.toml GitHub · Decompollaborate/rabbitizer · Revision 724a49a
  5. Makefile GitHub · Decompollaborate/rabbitizer · Revision 724a49a
  6. .github/workflows/make.yml GitHub · Decompollaborate/rabbitizer · Revision 724a49a
  7. .github/workflows/unit_tests_py.yml GitHub · Decompollaborate/rabbitizer · Revision 724a49a
  8. .github/workflows/check_tables.yml GitHub · Decompollaborate/rabbitizer · Revision 724a49a
  9. LICENSE GitHub · Decompollaborate/rabbitizer · Revision 724a49a
  10. https://github.com/Decompollaborate/rabbitizer/releases/tag/1.16.2
  11. https://pypi.org/project/rabbitizer/1.16.2/
  12. https://crates.io/crates/rabbitizer/1.16.2
  13. pyproject.toml GitHub · ethteck/splat · Revision 7548b97
  14. requirements.txt GitHub · Decompollaborate/spimdisasm · Revision 4b5d4c6

More in Native binaries

All 158 entries in Native binaries