{
  "added_at": "2026-11-03",
  "additional_evidence_urls": [
    "https://github.com/Decompollaborate/rabbitizer/blob/724a49a5b4dbfb99f1a9e6992e63964fd29c90c8/CHANGELOG.md",
    "https://github.com/Decompollaborate/rabbitizer/blob/724a49a5b4dbfb99f1a9e6992e63964fd29c90c8/pyproject.toml",
    "https://github.com/Decompollaborate/rabbitizer/blob/724a49a5b4dbfb99f1a9e6992e63964fd29c90c8/Cargo.toml",
    "https://github.com/Decompollaborate/rabbitizer/blob/724a49a5b4dbfb99f1a9e6992e63964fd29c90c8/Makefile",
    "https://github.com/Decompollaborate/rabbitizer/blob/724a49a5b4dbfb99f1a9e6992e63964fd29c90c8/.github/workflows/make.yml",
    "https://github.com/Decompollaborate/rabbitizer/blob/724a49a5b4dbfb99f1a9e6992e63964fd29c90c8/.github/workflows/unit_tests_py.yml",
    "https://github.com/Decompollaborate/rabbitizer/blob/724a49a5b4dbfb99f1a9e6992e63964fd29c90c8/.github/workflows/check_tables.yml",
    "https://github.com/Decompollaborate/rabbitizer/blob/724a49a5b4dbfb99f1a9e6992e63964fd29c90c8/LICENSE",
    "https://github.com/Decompollaborate/rabbitizer/releases/tag/1.16.2",
    "https://pypi.org/project/rabbitizer/1.16.2/",
    "https://crates.io/crates/rabbitizer/1.16.2",
    "https://github.com/ethteck/splat/blob/7548b9771e6f8418507b23434187fb07741af6d4/pyproject.toml",
    "https://github.com/Decompollaborate/spimdisasm/blob/4b5d4c68eeb9f9eae14b3bb713971433ae2c3c43/requirements.txt"
  ],
  "category": "binary-libraries",
  "description_en": "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.",
  "description_zh": "使用 C 编写、完全不在堆上分配内存的 MIPS 指令解码器，同一仓库还提供 Python、C++ 和 Rust 绑定，目标是生成可匹配的汇编。它逐条解码指令字，重点支持 MIPS I 至 III，部分支持 MIPS IV，还能处理 N64 的 RSP、PlayStation 的 R3000 GTE、PSP 的 R4000 Allegrex 以及 PS2 的 R5900；提供指令有效性检查、按特征分组查询指令、可配置的伪指令与寄存器命名，以及用于自建指针和符号检测的小工具。匹配式反编译工具以它为基础：splat 和 spimdisasm 都把它列为 Python 依赖。",
  "entry_url": "https://awesomerea.org/resources/rabbitizer/",
  "entry_url_zh": "https://awesomerea.org/zh/resources/rabbitizer/",
  "evidence_url": "https://github.com/Decompollaborate/rabbitizer/blob/724a49a5b4dbfb99f1a9e6992e63964fd29c90c8/README.md",
  "group": "tools",
  "id": "rabbitizer",
  "json_url": "https://awesomerea.org/resources/rabbitizer/record.json",
  "kind": "tool",
  "markdown_url": "https://awesomerea.org/resources/rabbitizer/index.md",
  "markdown_url_zh": "https://awesomerea.org/zh/resources/rabbitizer/index.md",
  "name": "rabbitizer",
  "name_zh": "rabbitizer MIPS 指令解码器",
  "record_type": "resource",
  "relationship": "foundation",
  "requirements": [
    "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."
  ],
  "requirements_zh": [
    "审阅时最新稳定版为 1.16.2，于 2026-05-29 发布到 GitHub、PyPI 和 crates.io，与所审阅的 1.x 提交一致。2.0.0 预览系列（2.0.0-alpha.9，2026-05-20）由另一条 Rust 分支发布；splat 和 spimdisasm 都把版本限制在 2.0.0 以下。",
    "可用 pip install rabbitizer 或 cargo add rabbitizer 安装。README 称最低需要 Python 3.9，而 pyproject.toml 仍声明 >=3.4；从源码构建 Python 绑定需要 Python 开发头文件。C 与 C++ 库使用 make 和 clang 构建（C11 与 C++17），Rust crate 声明 Rust 1.66.0。各语言绑定的指令表由 tables/ 中的模板生成，CI 会检查生成文件是否为最新。",
    "输入为原始 32 位指令字，调用方需自行从自己的二进制中取出代码、选择 CPU 变体，并处理地址和符号。会展开为多条指令的伪指令明确不予支持；README 称输出应当可匹配，报告 RSP 输出经 armips 重新汇编后可得到匹配代码，并说明 MIPS IV 仅部分支持。",
    "GitHub Actions 在 Ubuntu 22.04 上以“警告视为错误”构建 C 代码，并运行构建信息、逻辑和指令检查；Python 单元测试在 Linux、macOS 和 Windows 上运行；tests/asm 收有 GTE、Allegrex 和 R5900 的汇编样例。README 的参考资料列表指向托管在别处的第三方 CPU 手册和文档。",
    "采用 MIT 许可。"
  ],
  "targets": [
    "binary",
    "game"
  ],
  "url": "https://github.com/Decompollaborate/rabbitizer",
  "verification": "source-reviewed",
  "verified_at": "2026-10-27"
}
