Roughly what you have to do is:
Write an emulator for the ARM machine. This should have a range of features to show the inner workings of the process of executing an assembly program.
Write a bubble sort program in ARM assembly. The start of this file is provided, you have to fill in the blanks.
Write an emulator that is able to read a ".emu" file in the format described above and detect programs that are not correct such as having more or less than 32 bits per line, or that have non recognized instructions such as unknown opcodes. The program should be written so it is executed using a command similar to
./emu [option(s)] [url removed, login to view]
Implement the option "-trace" which should show how the program is executed and how the different registers are affected as the emulator goes trough each instruction.
Produce memory dumps by implementing options "-before" and "-after".
For each location in memory that holds a valid instruction or data value, print it out in the following format: <address>, <value (in hex)>
and so on
This should be done in a way that only things that have changed are shown rather than the entire state of memory.
Implement a working bubblesort algorithm in ARM assembly. You are given the starting point and input data values for this algorithm and you may replace the data section to use your own numbers, but full marks for this stage are only available if you use the provided data. Use the "SVC 2" debug instruction to print out each element of the array in turn once sorted, one per line.
In addition to these stages you should provide evidence of your emulator working in ".emu" files