SPIM MIPS Simulator
Total Page:16
File Type:pdf, Size:1020Kb
SPIM MIPS Simulator SPIM A MIPS32 Simulator James Larus [email protected] Microsoft Research Formerly: Professor, Computer Sciences Department, University of Wisconsin-Madison 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. Downloading SPIM Platform Program Form File Unix or Linux system spim http://www.cs.wisc.edu/~larus/SPIM/spim.tar.Z or Source code Mac OS X xspim http://www.cs.wisc.edu/~larus/SPIM/spim.tar.gz spim Binary RPM for Linux http://www.cs.wisc.edu/cbi/downloads/ xspim Fedora Microsoft Windows (Windows NT, 2000, XP) Executable http://www.cs.wisc.edu/~larus/SPIM/pcspim.zip spim PCSpim (spim 7.0 and later versions no longer run on Windows 95/98. Use version Source code http://www.cs.wisc.edu/~larus/SPIM/pcspim_src.zip 6.5 or earlier.) http://pages.cs.wisc.edu/~larus/spim.html 第 1 頁 / 共 9 2008/8/28 下午 05:39:34 SPIM MIPS Simulator ● To run spim or xspim on a Unix, Linux, or Mac OS X system, copy either the compressed tar file (http://www.cs.wisc.edu/~larus/SPIM/spim.tar.Z) or the gzip'ed tar file (http://www.cs.wisc.edu/~larus/SPIM/spim.tar.gz). Both files contains source code and must be compiled for your system. ● Ben Liblit of the Cooperative Bug Isolation Project (http://www.cs.wisc.edu/cbi/) produced a compiled version of spim for Fedora. It contains the project's low-overhead monitoring code, which can help find bugs in spim. If you are running Linux, this package can: save you the time and trouble of compiling and installing spim, help find bugs, and aid an interesting research project. ● To run PCspim under Microsoft Windows, download the file http://www.cs.wisc.edu/~larus/SPIM/pcspim.zip, unzip it, and click on setup.exe. ● Source for the Microsoft Windows version (both PCspim and spim) is available separately in the file http://www.cs.wisc.edu/~larus/SPIM/pcspim_src.zip. ● There is no native Macintosh version of spim. However, the xspim will compiles and runs on Mac OS X. Installation Microsoft Windows 1. Download the file http://www.cs.wisc.edu/~larus/SPIM/pcspim.zip and save it on your machine. 2. Unzip the file. 3. Click on the setup.exe program. Unix, Linux, or Mac OS X (Note: the directions changed slightly for version 7.2, to reflect a new directory structure. Please read carefully.) Installation is a bit more complex for a Unix or Linux system, as you need to compile the program for your particular computer and operating system. 1. Download either the file http://www.cs.wisc.edu/~larus/SPIM/spim.tar.Z or http://www.cs.wisc.edu/~larus/SPIM/spim.tar.gz. 2. Decompress the file, using either the program uncompress for the first file or gzip for the second file: % uncompress spim.tar.Z or % gzip -d spim.tar.gz 3. Move the file spim.tar to the directory in which you want to build spim and untar it: % tar xf spim.tar It will create a directory named spim-7.2 (or the most recent version number). http://pages.cs.wisc.edu/~larus/spim.html 第 2 頁 / 共 9 2008/8/28 下午 05:39:34 SPIM MIPS Simulator 4. The simple terminal interface is contained in the spim-7.2/spim directory and the X-windows interfaces is in the spim-7.2/xspim directory. The other directories are described in the README file. 5. Next, you must set the directories in which spim will be installed by editing the Makefile (the file that contains instructions on building spim). In general, if you are installing spim and want the windowing version (xspim), edit the file xspim/Imakefile. If you don't want xspim or are running on a system without X-windows installed, you use the file spim/Makefile. Set these pathnames to the appropriate locations for your system: EXCEPTION_DIR -- The full pathname of the directory in which to install the spim exception handler (exceptions.s). BIN_DIR -- The full pathname of the directory in which spim and xspim should be installed. MAN_DIR -- The full pathname of the directory in which the manual pages for spim and xspim should be installed. In general, the remaining parameters in a Makefile need not be changed. 6. Then, if you are using Imakefile file, change to the spim-7.2/xspim directory and type: % xmkmf % make If you do not have a copy of xmkmf, you can use the Makefile in the xspim directory, but beware that it may not work on your system because the paths to the X windows libraries could be different. 7. If you do not have X-windows, change to the spim-7.2/spim directory, edit Makefile, and type: % make 8. To run spim or xspim, the exception handler must be installed in the directory specified by the variable EXCEPTION_DIR in the Makefile. If the file exception.s is not installed, spim and xspim fail before they start running. You can either install this file by hand or by typing % make install which also installs spim or xspim, and the manual pages in the directories that you set (above). 9. To test that spim is correctly built, change to the spim-7.2/spim directory and type: % make test and examine the output of the test. (Note: the exception handler must be installed before running the test.) http://pages.cs.wisc.edu/~larus/spim.html 第 3 頁 / 共 9 2008/8/28 下午 05:39:34 SPIM MIPS Simulator Resources ● Elsevier (aka Morgan Kaufmann) has generously provided the spim documentation (Appendix A) from the third edition of Hennessy & Patterson, Computer Organization and Design: The Hardware/Software Interface. This documentation is far more complete and up-to-date than the documentation included in the spim distribution. The COD documentation includes: ❍ Appendix A: Assemblers, Linkers, and the SPIM Simulator (PDF). An overview and reference manual for spim and the MIPS32 instruction set. ❍ Getting Started with spim (PDF). Overview of the console version of spim (both Unix and Windows). ❍ Getting Started with xspim (PDF). Overview of the X-windows version of spim. ❍ Getting Starting with PCSpim (PDF). Overview of the Microsoft Windows version of spim. ❍ SPIM Command-Line Options (PDF). Overview of the command line options of spim (all versions). ● The documentation included with spim is also online (as a postscript or Adobe PDF file). This document is for the original spim (pre-version 7.0), which simulated the MIPS-I architecture rather than MIPS32, and so differs in many minor aspects from the current version of spim. Appendix A of Hennessy & Patterson, Computer Organization and Design: The Hardware/Software Interface (above), is more up-to-date and correct.. ● The best book I have seen on MIPS programming is: Dominic Sweetman, See MIPS Run, Morgan Kaufmann, San Francisco, CA, 1999, ISBN 1-55860-410-3. ● MIPS, Inc. has excellent free documentation on the MIPS32 architecture on their website (registration required) http://www.mips.com/products/resource_library/ product_materials/MIPS_Architecture.php: ❍ MIPS32® Architecture for Programmers Volume I: Introduction to the MIPS32® Architecture (.pdf) ❍ MIPS32® Architecture for Programmers Volume II: The MIPS32® Instruction Set (.pdf) ❍ MIPS32® Architecture for Programmers Volume III: The MIPS32® Privileged Resource Architecture (.pdf) ● An old reference manual for the MIPS architecture (including processors subsequent to the R2000/R3000) is: Gerry Kane and Joe Heinrich, MIPS RISC Architecture, Prentice Hall, Englewood Cliffs, N.J. 07632 ISBN 0-13-1059254. ● Another good book for the MIPS R2000 and R3000 is: Erin Farquhar and Philip Bunce, The MIPS Programmer's Handbook, Morgan Kaufmann, San Francisco, CA, 1994, ISBN 1-55860-297-6. ● The GNU C compiler can generate code for the MIPS R3000 and can be used as a cross compiler.