MIPS instruction decoder
Go to file
Anghelo Carvajal acee144578
C++ bindings (#9)
* start making c++ bindings

* Add sanity checks

* add descriptor methods

* setup making c++ library

* cpp test

* format (not tidy because it breaks everything and the result looks dumb)

* Fixes

* add missing alias

* move stuff to their own files

* InstructionRsp bindings

* r5900 bindings

* almost there

* binding for analysis stuff

* setters
2022-10-09 17:51:47 -03:00
.github/workflows name make ci 2022-09-09 23:41:47 -04:00
cplusplus C++ bindings (#9) 2022-10-09 17:51:47 -03:00
include C++ bindings (#9) 2022-10-09 17:51:47 -03:00
rabbitizer add missing bal metadata 2022-10-09 16:11:04 -03:00
src C++ bindings (#9) 2022-10-09 17:51:47 -03:00
tests/cplusplus C++ bindings (#9) 2022-10-09 17:51:47 -03:00
.clang-format
.clang-tidy add more checks to clang tidy 2022-07-09 18:12:21 -04:00
.gitattributes
.gitignore
LICENSE
Makefile C++ bindings (#9) 2022-10-09 17:51:47 -03:00
MANIFEST.in
pyproject.toml
r5900test.c Add R5900 support (#5) 2022-08-27 12:22:48 -04:00
README.md Add R5900 support (#5) 2022-08-27 12:22:48 -04:00
registersTrackerTest.c Fix RabbitizerRegistersTracker_moveRegisters not considering gpGot 2022-09-14 15:12:00 -03:00
rsptest.c Fix RSP instruction decoding (#4) 2022-08-22 16:27:51 -04:00
setup.cfg version bump 2022-10-09 16:04:33 -03:00
setup.py C++ bindings (#9) 2022-10-09 17:51:47 -03:00
test.c Fix RabbitizerRegistersTracker_moveRegisters not considering gpGot 2022-09-14 15:12:00 -03:00

rabbitizer

PyPI - Downloads GitHub GitHub release (latest SemVer) PyPI GitHub contributors

A MIPS instruction decoder API.

Currently supports all the CPU instructions for MIPS I, II, III and IV.

Installing

The recommended way to install is using from the PyPi release, via pip:

pip install rabbitizer

In case you want to mess with the latest development version without wanting to clone the repository, then you could use the following command:

pip install git+https://github.com/Decompollaborate/rabbitizer.git@develop

NOTE: Installing the development version is not recommended. Proceed at your own risk.

Features

  • Should produces matching assembly.
  • Fully written in C for fast decoding.
  • Python bindings.
    • The minimal Python version is 3.7, older versions are not guaranteed to work.
  • Includes some minor tools to build your own pointer/symbol detection.
  • Configurable, many features can be turned on and off.
  • MIPS instructions features:
    • Named registers for MIPS VR4300's coprocessors.
    • Support for many pseudoinstructions.
    • Properly handle move to/from coprocessor instructions.
    • Support for numeric, o32, n32 and n64 ABI register names.
  • Some workarounds for some specific compilers/assemblers:
    • SN64:
      • div/divu fix: tweaks a bit the produced div, divu and break instructions.
  • N64 RSP instruction decoding support.
    • RSP decoding has been tested to build back to matching assemblies with armips.
  • R5900 (PS2's Emotion Engine processor) decoding support.

References