As of Release 3.2, MARS assembles and simulates 155 basic instructions of the MIPS-32 instruction set, 319 pseudo-instructions or instruction variations and 17 syscall functions mainly for console and file I/O. These are listed in separate help tabs. It supports seven different memory addressing modes for load and store instructions: label, immed, label+immed, ($reg), label($reg), immed($reg), and label+immed($reg), where immed is an integer up to 32 bits. A setting is available to disallow use of pseudo-instructions and extended instruction formats and memory addressing modes.
Our guiding reference in implementing the instruction set has been Computer Organization and Design, Third Edition by Patterson and Hennessy, Elsevier - Morgan Kaufmann, 2005. It summarizes the MIPS-32 instruction set and pseudo-instructions in Figures 3.24 and 3.25 on pages 226-227, with details provided in the text and in Appendix A. MARS Release 3.2 implements all the instructions in Appendix A and those figures except the delay branches from the left column of Figure 3.25. It also implements all the system services (syscalls) and assembler directives documented in Appendix A.
The MARS IDE provides program editing and assembling but its real strength is its support for interactive debugging. The programmer can easily set and remove execution breakpoints or step through execution forward or backward (undo) while viewing and directly editing register and memory contents.
This document is available for printing on the MARS home page http://www.cs.missouristate.edu/MARS/.