The overall goal (part 5) is to write a simulator for a subset of the MIPS R4000 instruction set that includes a virtual memory simulator and a loader. This loader will accept Unix System V standard &quot;ELF &quot; (Execution and Linking Format) executable files that are produced by the GNU C compiler and linker software built for MIPS. Three of the first 4 parts are separately testable demonstrations of components that will go into part 5. Part 1 &quot;cpu&quot;: Simulator for the MIPS R4000 CPU that includes registers, a text dialog interface for memory, an elementary memory system that resembles the hardware support for bootstrap loading, some reports of the CPU simulation state and operation, and an elementary pipeline simulation to support delayed branches. It should also simulate a simple memory mapped output device so test programs can do output. Part 2 Learn to use gcc, as and ld, to produce MIPS &quot;ELF &quot; executable files (with objdump to view their outputs and objcopy to produce boot image files). Part 3 &quot;mapper&quot;: Virtual memory simulator that maintains a memory mapping table, allocates C++ free store (dynamic) memory to simulate physical memory, and performs the memory access operations requested by the &quot;cpu&quot;. Part 4 &quot;elftool&quot;: Open, read and analyze components of an executable file in System 5 &quot;ELF &quot; format. Part 5 &quot;simmips&quot;: Integrate the components of parts 1, 3 and 4, create a stack segment, and initialize any other needed process state to build a simulator for a simplified &quot;abstract machine &quot; that executes the process initialized from an executable file. For each part submission, a Makefile must be supplied so that the command gmake progname will build an executable named progname from all (and only) the user supplied program and header files in the current directory. Here, progname is cpu, mapper, elftool or simmips depending on the Part
To submit an update or takedown request for this paper, please submit an Update/Correction/Removal Request.