A high-performance interpreter to decode and execute commands.
To gain a deeper understanding of machine code and computer architecture, this project focused on implementing a virtual assembly interpreter for an ARM based simulator using an Intel x86-64 based simulator. Building an interpreter involves storing input arguments, decoding the input instruction, and then executing that instruction with the appropriate arguments. When considering this implementation, it is necessary to make a conscious trade-off between run time and memory footprint (imagine stepping through if-statements as opposed to loading a table to decode instructions). This implementation focused on optimizations to keep both the run time and memory footprint low.