Y86 Disassembler

One of the first modules we took during my first year was a Computer Organisation and Architecture module where we explored how computers work on the low-level.

To put everything we learnt into practice, we built a Y86 Disassembler in C. The mini-project was split into three objectives:

  1. Decode opcodes to mnemonics,
  2. Parse operands and registers from instructions,
  3. Disassemble full Y86 Programs from raw bytecode.

By the time I finished all three tasks I gained deeper appreciation for how things run on the machine level, you can check the project out here :)