Provided by: spim_8.0+dfsg-6.1_amd64 bug

NAME

       spim - A MIPS32 Simulator

SYNTAX

       spim [-asm/-bare      -exception/-noexception      -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> ]

DESCRIPTION

       SPIM S20 is a simulator that runs programs for the MIPS32 RISC computers. 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.

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.

       -exception
                 Load the standard exception handler and startup code.  This is the default.

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

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, Computer Sciences Department, University of Wisconsin-Madison.  Current address: James R
       Larus (larus@microsoft.com), Microsoft Research.

                                                                                                         spim(1)