NAME
spim - A MIPS R2000/R3000 Simulator
SYNTAX
spim [-asm/-bare -trap/-notrap -quiet/-noquiet -mapped_io/-
nomapped_io
-stext size -sdata size -sstack size -sktext size -skdata
size -ldata size -lstack size -lkdata size
-file file <args> -execute file <args> ]
DESCRIPTION
SPIM S20 is a simulator that runs programs for the MIPS
R2000/R3000 RISC computers. (For a description of the real
machines, see Gerry Kane and Joe Heinrich, MIPS RISC Archi-
tecture, Prentice Hall, 1992.) SPIM can read and immediately
execute files containing assembly language or MIPS execut-
able files. SPIM is a self-contained system for running
these programs and contains a debugger and interface to a
few operating system services.
SPIM comes in two versions. The plain version is called
spim. It runs on any type of terminal. It operates like
most programs of this type: you type a line of text, hit the
return key, and spim executes your command. The fancier
version of SPIM is called xspim. It uses the X-window sys-
tem, so you must have a bit-mapped display to run it.
xspim, however, is a much easier program to learn and use
because its commands are always visible on the screen and
because it continually displays the machine's registers.
OPTIONS
spim has many options:
-asm Simulate the virtual MIPS machine provided by the
assembler. This is the default.
-bare Simulate a bare MIPS machine without pseudo-
instructions or the additional addressing modes
provided by the assembler. Implies -quiet.
-trap Load the standard exception handler and startup
code. This is the default.
-notrap Do not load the standard exception handler and
startup code. This exception handler handles
exceptions. When an exception occurs, SPIM jumps
to location 0x80000080, which must contain code to
service the exception. In addition, this file
contains startup code that invokes the routine
main. Without the startup routine, SPIM begins
execution at the instruction labeled __start.
-quiet Print a message when an exception occurs. This is
the default.
-noquiet Do not print a message at exceptions.
-mapped_io
Enable the memory-mapped IO facility. Programs
that use SPIM syscalls to read from the terminal
cannot also use memory-mapped IO.
-nomapped_io
Disable the memory-mapped IO facility.
-stext size -sdata size -sstack size -sktext size -
skdata size
Sets the initial size of memory segment seg to be
size bytes. The memory segments are named: text,
data, stack, ktext, and kdata. The text segment
contains instructions from a program. The data
segment holds the program's data. The stack seg-
ment holds its runtime stack. In addition to run-
ning a program, SPIM also executes system code
that handles interrupts and exceptions. This code
resides in a separate part of the address space
called the kernel. The ktext segment holds this
code's instructions and kdata holds its data.
There is no kstack segment since the system code
uses the same stack as the program. For example,
the pair of arguments -sdata 2000000 starts the
user data segment at 2,000,000 bytes.
-ldata size -lstack size -lkdata size
Sets the limit on how large memory segment seg can
grow to be size bytes. The memory segments that
can grow are data, stack, and kdata.
-file file <args>
Load and execute the assembly code in the file
with arguments <args>.
-execute file <args>
Load and execute the MIPS executable (a.out) file
with arguments <args>. Only works on systems using
a MIPS processors.
BUGS
Instruction opcodes cannot be used as labels.
SEE ALSO
xspim(1)
James R. Larus, ``SPIM S20: A MIPS R2000 Simulator,''
included with SPIM distribution.
AUTHOR
James R. Larus (larus@cs.wisc.edu), Computer Sciences
Department, University of Wisconsin-Madison.