This is going to be big. It might reshape vintage gaming. From the guy with a repo on reverse engineering a gameboy ROM from a photo of the die.
Howdy y’all,
These days, the world has many excellent disassemblers, but when writing assembly in a weird languages, many of us just fall back to handwriting bytes in Nasm or painfully adjusting to yet another macro assembler. GoodASM is my attempt to fix that.
This assembler is very easy to retarget by extending C++ class and calling a few functions. You pretty much just define the endianness and byte size, then copy the instruction definitions almost verbatim from the programmer’s guide.
Defining a new target is completely symmetric. While assembly is the primary purpose of this tool, a disassembler is also produced. An example for each instruction automatically becomes a unit test, insuring that you don’t accidentally fat-finger a bitfield or two.
When writing assembly, particularly shellcode, you often have questions that a calculator should answer. What are all the instruction that begin with ro in this language? What are all of the potential forms of the jmp instruction? Does ror a assemble to ASCII? An interactive REPL mode answers these in a jiffy, with tab completion.
If you like this program, please buy my book on Microcontroller Exploits for yourself or for a clever student.
–Travis