SPIM

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).

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

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)
serviceTrap codeInputOutputNotes
print_int $v0 = 1$a0 = integer to printprints $a0 to standard outputbase = 10
print_string $v0 = 4$a0 = address of first characterprints a character string to standard output
read_int $v0 = 5integer read from standard input placed in $v0base = 10
sbrk $v0 = 9$a0 = number of bytes required$v0= address of allocated memoryAllocates memory from the heap
exit $v0 = 10
file_open $v0 = 13$a0 = full path, $a1 = flags, $a2 = UNIX octal file mode$v0 = file descriptorexample; 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.

gollark: I guess it might be possible to define them as built-ins insteād?
gollark: Right.
gollark: Okay.
gollark: Well?
gollark: `operator/+!:` would be a definition for `/+!:`, for example.

See also

  • GXemul (formerly known as mips64emul), another MIPS emulator. Unlike SPIM, which focuses on emulating a bare MIPS 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". Archived from the original (HTML) on 2011-01-27. Retrieved 2017-05-15.
  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.
This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.