Skip to content

Releases: Decompollaborate/rabbitizer

1.5.0: Rust bindings

18 Dec 18:51
6e7b95d
Compare
Choose a tag to compare
  • Adds Rust bindings
  • The table-macro-hell has been changed a little to include pre-processed versions of all the tables in the repository. This change should be more friendly to IDEs

1.4.0

16 Dec 14:39
44b847f
Compare
Choose a tag to compare
  • 3 non-existent RSP instructions where removed (rsp_cache, rsp_lwc1 and rsp_swc1)
  • New methods to know if an instruction reads the value of a GPR: .readsRs, .readsRd and .readsRt
  • Many descriptor information where corrected
  • Deprecate isJrRa(), prefer new isReturn() method
  • Deprecate isJrNotRa(), prefer new isJumptableJump() method

Meta:

  • Remove setup.cfg and move all the info to pyproject.toml
  • Descriptor logic errors are now checked in CI

1.3.3

30 Nov 16:32
3f6d92b
Compare
Choose a tag to compare
  • Fix RSP's jalr being marked as invalid

1.3.2

30 Nov 13:47
b9a39f6
Compare
Choose a tag to compare
  • Fixed RSP using CPU cop0 .inc file instead of RSP cop0 and cop2 files #13
  • Check for _INVALID unique ids in isValid

1.3.1

16 Oct 20:22
54f9976
Compare
Choose a tag to compare

Removes signedness from AccessType

1.3.0

15 Oct 13:18
af1d62b
Compare
Choose a tag to compare
  • Adds C++ bindings
  • Fix missing operands on some trap instructions
  • Fix buffer size calculation for disassembly
  • Deprecated functions/methods:
    • Instruction#getImmediate(): Use Instruction#getProcessedImmediate() instead
    • Instruction#getGenericBranchOffset(): Use Instruction#getBranchOffsetGeneric() instead
    • Instruction#mapInstrToType(): Use Instruction#getAccessType() instead
    • Instruction#isUnknownType()
    • Instruction#isJType(): Use Instruction#isJumpWithAddress() instead
    • Instruction#isIType(): Use Instruction#hasOperandAlias(OperandType.cpu_immediate) instead
    • Instruction#isRType()
    • Instruction#isRegimmType()
  • New functions/methods:
    • Instruction#getBranchOffsetGeneric(): Like Instruction#getGenericBranchOffset(), but does not require the currentVram parameter
    • Instruction#getBranchVramGeneric()
    • Instruction#getDestinationGpr()
    • Instruction#hasOperandAlias()
    • Instruction#isJumpWithAddress()
    • Instruction#readsHI()
    • Instruction#readsLO()
    • Instruction#modifiesHI()
    • Instruction#modifiesLO()
    • Instruction#getAccessType()
    • InstrCategory#fromStr()
  • New enums:
    • OperandType
    • AccessType

1.2.2: `bal` and proper `\\` escape

09 Oct 20:04
28a2446
Compare
Choose a tag to compare
  • Add bal support
  • Use special notation for branches which should produce matching instructions even when no immOverride was passed
  • Escape \ -> \\
  • Add extern "C" in every header

1.2.1: Static library building in the Makefile

26 Sep 14:32
70426d5
Compare
Choose a tag to compare
  • Makefile now creates a librabbitizer.a file by default.
  • Makefile can also build a librabbitizer.so with make dynamic
  • New include/rabbitizer.h header which includes every other header
  • Added a version header

1.2.0: `%got` compatibility

17 Sep 20:44
4653029
Compare
Choose a tag to compare
  • New methods in RegistersTracker to support tracking %got accesses
    • processGpLoad, which works similar to processLui
    • preprocessLoAndGetInfo, which replaces the now deprecated getLuiOffsetForLo
  • Move operand types to the table format. Operands were also renamed to a more concise name.
  • Fix the wrong returned value on Utils.From2Complement when bits equals 32.

1.1.0: RSP and R5900 support

27 Aug 16:47
7d66352
Compare
Choose a tag to compare
  • Add proper instruction decoding for N64's RSP
  • Add support for decoding the R5900 processor (PS2's Emotion Engine processor)
  • Cleanup internal instruction tables format