A C-based program that can execute ARM machine code by emulating the register state of an ARM CPU and emulating the execution of ARM instructions. Some notable features that are included are a representation of the register and the stack, ability to emulate ARM functions for data processing and storing operations, and a cache simulation for directed-mapped instructions to help visualize how a cache works. It also included a dynamic analysis for function execution which reports all the processes through the command line such as the instructions counts, number of branches taken, and cache ratios. We also ended up reimplement the similar logic using digital design to run the c code and the arm code from that previous logic.