| Crates.io | spimdisasm |
| lib.rs | spimdisasm |
| version | 2.0.0-alpha.1 |
| created_at | 2025-08-07 23:30:56.253414+00 |
| updated_at | 2025-08-07 23:30:56.253414+00 |
| description | MIPS disassembler |
| homepage | |
| repository | https://github.com/Decompollaborate/spimdisasm |
| max_upload_size | |
| id | 1786007 |
| size | 1,404,541 |
spimdisasm (whole name is lowercase) is a matching MIPS disassembler API with built-in instruction analysis.
Currently supports the instruction set for MIPS I, II, III and IV.
Mainly focused on supporting binaries from videogame platforms like the Nintendo 64, PlayStation 1, PlayStation 2, and PlayStation Portable.
A matching disassembler generates assembly that can be assembled back into the same original binary it was produced from, performing a clean round-trip.
no_std support, but does require the Rust alloc crate..text, .data, .rodata and .bss disassembly..text, .data,
.rodata and .bss).%hi/%lo relocs) with high success rate.RO_ and
B_ for .rodata and .bss sections) or its type (STR_, FLT_ and DBL_
for string, floats and doubles respectively).SN64/PSYQ:
div/divu fix: tweaks a bit the produced div, divu and break instructions.The current version of spimdisasm requires Rust 1.83.0 or greater.
The current policy is that this may be bumped in minor spimdisasm updates.
spimdisasm is available on crates.io and can be included in your Cargo enabled project like this:
[dependencies]
spimdisasm = "2.0.0-alpha.1"
There are a few compilation features. Currently none of them are enabled by default.
std: Turns on std (or turn off no_std, depending on how you prefer it).
This currently doesn't do much.
std feature on dependencies.hash_tables: Toggles the internal implementation of some unordered maps
to use HashMaps instead of BTreeMaps, allowing for possible (unmeasured)
performance improvements.
std feature.The other features are meant for internal use only.
This library follows Semantic Versioning. We try to always keep backwards compatibility, so no breaking changes should happen until a major release (i.e. jumping from 1.X.X to 2.0.0).
To see what changed on each release check either the CHANGELOG.md file or check the releases page on Github. You can also use this link to check the latest release.