Epson S1C33000 support in Ghidra.
Work in progress. Currently able to disassemble raw binaries fine. Decompilation/P-code implementation needs polishing. Analysis of ELF objects does not work yet due to lack of an architecture-specific parser for relocations, etc.
Not a fork of s1c33_sleigh.
Use gradle to build the extension.
If GHIDRA_INSTALL_DIR is correctly defined, run
gradleOr, in case it is not defined or you wish to build it for a Ghidra version different than what is specified in GHIDRA_INSTALL_DIR, use
gradle -PGHIDRA_INSTALL_DIR=<Absolute path to Ghidra>The disassembly syntax is a simplified version inspired by the Capstone syntax and Arm assembly syntax, and is slightly different from Epson's. Specifically:
- Extended instructions do not have the
xprefix. - Registers do not have the
%prefix. .wsuffix are omitted.ld.*that loads to RAM is renamed tost(short for store) and with its operands reversed.ld.*that loads from immediate is renamed tomov.pushnandpopnhave the syntax ofpushn {:rs}andpopn {:rd}to illustrate how the pushed elements look like on the stack from lower to higher address.
If an instruction is delayed, an underscore (_) gets added to the beginning of mnemonic (add -> _add). This is done by Ghidra.