spim is a MIPS32 simulator.
spim is a self-contained simulator that will run MIPS32 assembly language programs. It reads and executes assembly language programs written for this processor. spim also provides a simple debugger and minimal set of operating system services. spim does not execute binary (compiled) programs.
spim implements almost the entire MIPS32 assembler-extended instruction set. (It omits most floating point comparisons and rounding modes and the memory system page tables.) The MIPS architecture has several variants that differ in various ways (e.g., the MIPS64 architecture supports 64-bit integers and addresses), which means that spim will not run programs compiled for all types of MIPS processors. MIPS compilers also generate a number of assembler directives that spim cannot process. These directives usually can be safely deleted.
Earlier versions of spim (before 7.0) implemented the MIPS-I instruction set used on the MIPS R2000/R3000 computers. This architecture is obsolete (though, has never been surpassed for its simplicity and elegance). spim now supports the more modern MIPS32 architecture, which is the MIPS-I instruction set augmented with a large number of occasionally useful instructions. MIPS code from earlier versions of SPIM should run without changes, except code that handles exceptions and interrupts. This part of the architecture changed over time (and was poorly implemented in earlier versions of spim). Code of this sort need to be updated. Examples of the new code are in exceptions.s and Tests/tt.io.s.
spim comes with complete source code and documentation. It also include a torture test to verify a port to a new machine.
spim implements both a simple, terminal-style interface and a window interface. On Unix, Linux, and Mac OS X the spim program provides a simple terminal interface and the xspim program provides the windowing interface. On Microsoft Windows, the spim program provides a console interface and PCSpim provides a Windows interface.
What's New in This Release:
· Fix for flex 2.5.33 (internal change broke spim's scanner).
· Exception handler can be a semicolon-separated list of files that will be loaded in order. On Unix, SPIM_EXCEPTION_HANDLER environment variable is consulted before command line arguments.
· Memory corruption caused spim to crash when label was defined twice in succession.
· PCSpim updates register and memory display after a parse error while reading a file.
· Eliminated unnecessary null char between strings in list of strings produced by .asciiz.
· Makefiles (in spim/ and xspim/) now contain clearly defined paths for installing executables, exception handler, and man pages. The man pages are no longer installed by the "make install" command.
· Change psfig to epsfig in spim.tex (does anyone still use this obsolete documentation?).