ARM microprocessor software based emulator - Gathan, Sunil Shashikant (2013)
With the recent explosion of devices driving “smart technologies” such as tablets, phones, in-vehicle infotainment systems, and many such devices, ARM has taken center stage in being the core of choice for many such device vendors. Thus the appreciation and workings of the ARM core has become more relevant than ever. In light of that fact, over the years, many emulators have been designed with the intent of emulating the ARM core on a software paradigm. Software based emulation lends itself to many uses, from early application validation to an educational tool for the masses. Hence, this work has emulated the ARM instruction set based on the ARM 7 core. With the objective to enable an extensible and modular design, the framework was developed by designing classes for certain core components which can be replicated as objects and encapsulating execution based entities into functions. The final result of this project is the development of a mechanism for updating the CPSR for each instruction, alongside 16 Data Processing instructions with rotational and register shifting support, all aspects of single data transfer load and store, positive and negative branching with and without link alongside 16 conditional code evaluation, and all User Mode visible registers. The ARM emulator also supports both normal assembler instruction and conditional code instructions in both 2 and 3 operand format. The emulator was verified using single instructions and the GCD conditional code instruction as a program.