Table of Contents
spim - A MIPS R2000/R3000 Simulator
spim [-asm/-bare -trap/-notrap
-quiet/-noquiet
-mapped_io/-nomapped_io
-delayed_branches -delayed_loads
-stext size -sdata size
-sstack size
-sktext size
-skdata size
-ldata size
-lstack size
-lkdata size
-file file <args> -execute file <args> ]
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 Architecture,
Prentice Hall, 1992.) SPIM can read and immediately execute files containing
assembly language or MIPS executable 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 system, 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.
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.
- -delayed_branches
- Simulate
MIPS's delayed control transfers by executing the instruction after a branch,
jump, or call before transferring control. SPIM's default is to simulate
non-delayed transfers, unless the -bare flag is set.
- -delayed_loads
- Simulate
MIPS's original, non-interlocked load instructions. SPIM's default is to simulate
non-delayed loads, unless the -bare flag is set.
- -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 segment holds its runtime stack.
In addition to running 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.
Instruction opcodes cannot be used as labels.
xspim(1)
James R. Larus, ``SPIM S20: A MIPS R2000 Simulator,'' included with SPIM distribution.
James R. Larus (larus@cs.wisc.edu), Computer Sciences Department, University
of Wisconsin-Madison. Current address: James R Larus (larus@microsoft.com),
Microsoft Research.
Table of Contents