Star on GitHubStar1.1k stars

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; 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. The README's reference list points to third-party CPU manuals and documentation hosted elsewhere.
  • MIT.

About this entry

The description was reviewed against primary sources.

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 269 entries in Native binaries

↑↓ move↵ open⌘↵ new tab