Simulate the virtual MIPS machine provided by the assembler. This is
Simulate a bare MIPS machine without pseudo-instructions or the
additional addressing modes provided by the assembler. Implies
Load the standard exception handler and startup code. This is the default.
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.
Print a message when an exception occurs. This is the default.
Do not print a message at exceptions.
Enable the memory-mapped IO facility. Programs that use SPIM syscalls
to read from the terminal cannot also use memory-mapped IO.
Disable the memory-mapped IO facility.
Simulate MIPSs delayed control transfers by executing the instruction after
a branch, jump, or call before transferring control. SPIMs default is to
simulate non-delayed transfers, unless the -bare flag is set.
Simulate MIPSs original, non-interlocked load instructions. SPIMs 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 programs 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 codes 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.
Disply the general purpose registers (GPRs) in hexadecimal.
Disply the general purpose registers (GPRs) in decimal.
Disply the floating-point registers (FPRs) in hexadecimal.
Disply the floating-point registers (FPRs) as floating-point values
|-file file 10||
Load and execute the assembly code in the file.
|-execute file 10||
Load and execute the MIPS executable (a.out) file. Only works
on systems using a MIPS processors.
Instruction opcodes cannot be used as labels.
James R. Larus, SPIM S20: A MIPS R2000 Simulator, included with SPIM distribution.
James R. Larus, Computer Sciences Department, University of Wisconsin-Madison. Current address: James R Larus (firstname.lastname@example.org), Microsoft Research.