Source code of MARS Assembler
First commit of the 4.5 version (latest version available)
This commit is contained in:
@@ -0,0 +1,108 @@
|
||||
<html>
|
||||
<title>MARS 4.5 help contents
|
||||
</title>
|
||||
<body>
|
||||
<center>
|
||||
<h3>MARS - Mips Assembly and Runtime Simulator</h3>
|
||||
<h4>Release 4.5</h4>
|
||||
<h4>August 2014</h4>
|
||||
<h4>Cool Capability: Plug-in Tools</h4>
|
||||
</center>
|
||||
|
||||
Beginning with Release 2.0, MARS is capable of running externally-developed
|
||||
software that interacts with an executing MIPS program and MIPS system
|
||||
resources.
|
||||
The requirements for such a program are:
|
||||
<ol>
|
||||
<li>It implements the <tt>mars.tools.MarsTool</tt> interface.
|
||||
<li>It is part of the <tt>mars.tools</tt> package.
|
||||
<li>It compiles cleanly into a ".class" file, stored in the <tt>mars/tools</tt> directory.
|
||||
</ol>
|
||||
MARS will detect all qualifying tools upon startup and include them in
|
||||
its Tools menu.
|
||||
When a tool's menu item is selected, an instance of it will be created using its no-argument
|
||||
constructor and its <tt>action()</tt> method will be invoked.
|
||||
If no qualifying tools are found at MARS startup, the Tools menu will not
|
||||
appear.
|
||||
|
||||
<p>To use such a tool, load and assemble a MIPS program of interest then select the desired tool
|
||||
from the Tools menu. The tool's window will open and depending on how it is written it will either
|
||||
need to be "connected" to the MIPS program by clicking a button or will already be connected. Run
|
||||
the MIPS program as you normally would, to initiate tool interaction with the executing program.
|
||||
|
||||
<p>Beginning with Release 3.2, the abstract class <tt>mars.tools.AbstractMarsToolAndApplication</tt>
|
||||
is included in the MARS distribution to provide
|
||||
a substantial framework for implementing your own MARS Tool. A subclass that extends it by
|
||||
implementing at least its two abstract methods can be run not only from the Tools menu but also
|
||||
as a free-standing application that uses the MARS assembler and simulator in the background.
|
||||
|
||||
<p>Several Tools developed by subclassing <tt>AbstractMarsToolAndApplication</tt> are included
|
||||
with MARS: an Introduction to Tools, a Data Cache Simulator, a Memory Reference Visualizer, and
|
||||
a Floating Point tool. The last one is quite useful even when not connected to a MIPS program
|
||||
because it displays binary, hexadecimal and decimal representations for a 32 bit floating point
|
||||
value; when any of them is modified the other two are updated as well.
|
||||
|
||||
<p>Release 3.5 includes new tools, most notably a keyboard and display simulator that allows you
|
||||
to perform memory-mapped I/O (MMIO) using polled and interrupt-driven techniques as described
|
||||
in various references. Click its Help button for more details.
|
||||
|
||||
<p>If you wish to develop your own MARS Tool, you will first need to extract the MARS distribution
|
||||
from its JAR file if you have not already done so. All MARS tools must
|
||||
be stored in the <tt>mars/tools</tt> directory.
|
||||
|
||||
<p>Follow the Tutorial Materials link on the MARS homepage to find a tutorial
|
||||
that covers development of MARS Tools.
|
||||
|
||||
<h4>Cool Capability: Extending the syscall set or reassigning syscall numbers</h4>
|
||||
|
||||
Beginning with Release 3.1, system calls (<tt>syscall</tt> instruction) are implemented using
|
||||
a technique similar to that for tools. This permits anyone to add a new syscall by defining
|
||||
a new class that meets these requirements:
|
||||
<ol>
|
||||
<li>It implements the <tt>mars.mips.instructions.syscalls.Syscall</tt> interface, or
|
||||
extends the <tt>mars.mips.instructions.syscalls.AbstractSyscall</tt> class (which
|
||||
provides default implementations of everything except the <tt>simulate()</tt> method).
|
||||
<li>It is part of the <tt>mars.mips.instructions.syscalls</tt> package.
|
||||
<li>It compiles cleanly into a ".class" file, stored in the
|
||||
<tt>mars/mips/instructions/syscalls</tt> directory.
|
||||
</ol>
|
||||
MARS will detect all qualifying syscall classes upon startup and the runtime simulator
|
||||
will invoke them when the <tt>syscall</tt> instruction is simulated and register <tt>$v0</tt>
|
||||
contains the corresponding integer service number.
|
||||
|
||||
<p>Syscalls and syscall number assignments in MARs match those of SPIM for syscalls 1 through 17.
|
||||
However if you wish to change syscall number assignments, you may do so by editing the
|
||||
<tt>Syscall.properties</tt> file included in the release (this requires extraction from the JAR
|
||||
file).
|
||||
|
||||
<p>Follow the Tutorial Materials link on the MARS homepage to find a tutorial
|
||||
that covers development of system calls.
|
||||
|
||||
<h4>Cool Capability: Extending the instruction set</h4>
|
||||
|
||||
You can add customized pseudo-instructions to the MIPS instruction set by editing
|
||||
the <tt>PseudoOps.txt</tt> file included in the MARS distribution. Instruction
|
||||
specification formats are explained in the file itself.
|
||||
The specification of a pseudo-instruction is one line long. It consists of
|
||||
an example of the instruction, constructed using
|
||||
available instruction specification symbols, followed by a tab-separated
|
||||
list of the basic MIPS instructions it will expand to. Each is an instruction template
|
||||
constructed using
|
||||
instruction specification symbols combined with special template
|
||||
specification symbols. The latter permit substitution at program
|
||||
assembly time of operands from the user's program into the expanded
|
||||
pseudo-instruction.
|
||||
|
||||
<p><tt>PseudoOps.txt</tt> is read and processed at MARS startup, and error messages will
|
||||
be produced if a specification is not correctly formatted. Note that if you wish to
|
||||
edit it you first have to extract it from the JAR file.
|
||||
|
||||
<p>Follow the Tutorial Materials link on the MARS homepage to find a tutorial
|
||||
that covers modification of the pseudo-instruction set.
|
||||
<p>
|
||||
<hr>
|
||||
<p>
|
||||
This document is available for printing on the MARS home page
|
||||
<tt><b>http://www.cs.missouristate.edu/MARS/</b></tt>.
|
||||
</body>
|
||||
</html>
|
||||
Reference in New Issue
Block a user