Disassembler
An x86 disassembler written in C for my Master's Degree, it can process ELF files and runs on windows, Linux and MacOS by using the Apache Portable Runtime.
It uses a data oriented approach where all the opcode definitions and parameters are read from a database file, so in theory it could be easily updated to support newer x86 instructions.
The core functionality was implemented using "pseudo object oriented programming" by simulating objects using functional pointers and structs (like UEFI does).
OPCODE DB
A helper program written in Python for us in the disassembler. It converts an XML file with opcode definitions into an indexed binary database. The output is a binary blob that can be memory mapped and used directly by the disassembler. It also removes some of the stuff the disassembler doesn't need, thus greatly simplifying loading the database.
Parsing XML in pure C is annoying, parsing memory with structs is fun!
There are other smaller coding projects in my <Github>.