Work-in-progress disassembler capable of disassembling machine code of PlayStation 2's Emotion Engine CPU (C790), built with C#. The current version is single threaded and can decode and parse around 700'000 instructions per second on a Dell Latitude E7240 laptop (i7-4600U @ 2.10GHz). There are still important tasks that should be done before this is ready for any real use, for example the register names are not parsed yet and tests are completely missing. It's also very likely that some of the instructions are decoded incorrectly.
All the implementation so far has been done by following the official documentation of the processor from Toshiba.
- Support the default instruction set
- Support the extended C790-specific instruction set
- Support the COP0 system control coprocessor instruction set
- Register name decoding
- Assembler
- Pseudo instructions (nop is already one)
- Support the COP1 (FPU) coprocessor instruction set
- Registers
- Support the VPU instruction set
- Registers
- AvalonEdit integration
- Syntax highlighting for MIPS instructions
- Hierarchical code view (custom-drawn SkiaSharp control?)
- Jump and branch arrows
- Go to address functionality
- Hex line numbers
- Docking
- Optimizations (there's way too many conversions, allocations etc. going on right now but that's on purpose to get everything up and running before optimizing)
- Unit tests
- Open/save file
- Persist the created instruction instances for future use (currently they're just collected by the GC at some point)
- Multithreading