An x86 disassembler written in C turned in for my Master's Degree, it can process ELF files and runs in windows, linux and OSX. It uses a data centric approach and was implemented using a pseudo object oriented paradigm built with pointers and structures.
A helper program written in Python used in the disassembler. It converts an XML file with opcode definitions into an indexed database. The output is a binary blob that can be memory mapped and used directly by the dissassembler.