SPIM

From Wikipedia, the free encyclopedia

This is an old revision of this page, as edited by Corn cheese (talk | contribs) at 09:48, 1 October 2016 (Filled in 4 bare reference(s) with reFill ()). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.

SPIM
Developer(s)James Larus
Stable release
9.1 / July 2011; 12 years ago (2011-07)[1]
Operating systemGNU/Linux, Mac OS X, Unix and Windows
LicenseBSD license
Websitespimsimulator.sourceforge.net

SPIM is a MIPS processor simulator, designed to run assembly language code for this architecture. The program simulates R2000 and R3000 processors, and was written by James R. Larus while a professor at the University of Wisconsin-Madison.[2] The MIPS machine language is often taught in college-level assembly courses, especially those using the textbook Computer Organization and Design: The Hardware/Software Interface by David A. Patterson and John L. Hennessy (ISBN 1-55860-428-6).

The name of the simulator is a reversal of the letters "MIPS".

SPIM simulators are available for Windows (PCSpim), Mac OS X and Unix/Linux-based (xspim) operating systems. As of release 8.0 in January 2010, the simulator is licensed under the standard BSD license.

In January, 2011, a major release version 9.0 features QtSpim that has a new user interface built on the cross-platform Qt UI framework and runs on Windows, GNU/Linux, and Mac OS X. From this version, the project has also been moved to SourceForge for better maintenance. Precompiled versions of QtSpim for Linux (32-bit), Windows, and Mac OS X, as well as PCSpim for Windows are provided.

The SPIM operating system

The SPIM simulator comes with a rudimentary operating system, which allows the programmer usage of common used functions in a comfortable way. Such functions are invoked by the syscall-instruction. Then the OS acts depending on the values of specific registers.

Examples of system calls (used by SPIM)
service Trap code Input Output Notes
print_int $v0 = 1 $a0 = integer to print prints $a0 to standard output base = 10
print_string $v0 = 4 $a0 = address of first character prints a character string to standard output
read_int $v0 = 5 integer read from standard input placed in $v0 base = 10
sbrk $v0 = 9 $a0 = number of bytes required $v0= address of allocated memory Allocates memory from the heap
exit $v0 = 10
file_open $v0 = 13 $a0 = full path, $a1 = flags, $a2 = UNIX octal file mode $v0 = file descriptor example; there are read/write/close functions, too

The SPIM OS expects a label named main as a handover point from the OS-preamble.

SPIM Alternatives/Competitors

MARS (MIPS Assembler and Runtime Simulator)[3] is a Java-based IDE for the MIPS Assembly Programming Language and an alternative to SPIM. Its initial release was in 2005 and is under active development.

Imperas is a suite of embedded software development tools for MIPS architecture which uses Just-in-time compilation emulation and simulation technology. The simulator was initially released in 2008 and is under active development. There are over 30 open source models of the MIPS 32 bit [4] and 64 bit [5] cores.

See also

  • GXemul (formerly known as mips64emul), another MIPS emulator. Unlike SPIM, which focuses on emulating a bare MIPS instruction set implementation, GXemul is written to emulate full computer systems based on MIPS microprocessors—for example, GXemul can emulate a DECstation 5000 Model 200 workstation
  • OVPsim also emulates MIPS, and where all the MIPS models are verified by MIPS Technologies
  • QEMU also emulates MIPS
  • MIPS architecture

References

  1. ^ "Changes to Spim" (HTML). Retrieved 2016-01-04. {{cite web}}: |archive-url= is malformed: timestamp (help)
  2. ^ "SPIM MIPS Simulator". Retrieved 1 October 2016.
  3. ^ "MARS MIPS simulator - Missouri State University". Retrieved 1 October 2016.
  4. ^ "Open Virtual Platforms". Retrieved 1 October 2016.
  5. ^ "Open Virtual Platforms". Retrieved 1 October 2016.

External links