cpu simulator + testbench

Overview
As part of my Computer Architecture module , built a CPU simulator and testbench from scratch in C++.
A key part of building the CPU simulator was strictly adhering to a given set of interfaces/API provided as part of the specification.
This meant that the CPU and the testbench could be tested independent of each other.
Also important was to understand how a CPU works, how various instructions need to be implemented ,
Goal
The end goal of the project was to simulate a CPU, memory and Testbench. There was no address translation involved and a single block of memory is assumed.
Procedure
Kindly see the github page for all the details of the specification and the source.