site is now maintained from here. I no longer work at DCU.)
WinMIPS64 is an instruction set simulator, and is designed as a
replacement for the popular Microsoft Windows utility WinDLX.
The classic text
Computer Architecture - a Quantitative Approach, by
Hennessy & Patterson, 5th edition
from its 3rd edition has switched from the
32-bit DLX architecture, to the 64-bit MIPS architecture. Hence
the need for a new teaching tool. WinDLX
had a very nice friendly user interface, including a full graphical simulation
of the 5-stage pipeline. Therefore it was decided to create a similar tool for
the MIPS64 with a very similar interface.
If you know how to use WinDLX
then the look-and-feel of WinMIPS64 will be very familiar. However there
are a few changes.
- Forwarding is indicated by colouring the forwarded register. The
colour indicates the stage in the pipeline that it is being forwarded
- A delay slot can be implemented if desired. With V1.30 a simple
branch-target-buffer can also be simulated. A << in the code window
beside a jump or branch instruction indicates that it is predicted as
- The full instruction set is not currently implemented. In
particular there is no support for single precision floating-point, or
"paired single" floating-point.
- Registers and memory can be changed by left-double-clicking on the
target. Right-double-clicking on memory displays it in double-precision
decimal floating point format.
- Break-points are set and cleared by simply left-double-clicking on
the code window.
The software is available for download in a
.ZIP archive. This includes the Windows '98/2000/NT/whatever executable, a
simple stand-alone DOS assembler, and several example programs. It may be used
freely without restriction. If you find any bugs, or would like to see an
additional feature, please let me know at
Download from WinMIPS64. Documentation
in Microsoft Word format is also available. Here are a couple of lab exercises ex2.doc and ex3.doc
Full Visual C++ source code is available on
request - but tell me who you are and why you want it.
- displays the currently loaded file on status line (press F10).
- remembers last folder used for input.
- Bug fix - registers modified by double-clicking stay modified.
- Integer dmul and ddiv instructions disabled (they make many
tutorial problems too easy!)
- Support for network installations
- Various minor bug -fixes
- System far less tolerant of silly syntax errors
- Open file name appears on title bar.
- Some fonts fixed
- Possibility of WAR hazards for FP instructions recognized
- F5 removed
- Bug in Cycles window fixed
- Branch Target Buffer option added
- Minor bugs eliminated
- More example programs
- Long lines generate an error
- Larger data area allowed
- Standard MIPS pseudo-names for registers now allowed
- .. so $zero for r0, $t0
for r8 etc. Also $6 for r6.
- # is now acceptable as well as ; to indicate a comment
- New Dumb Terminal I/O capability – New Terminal Window
- New example program testio.s – demos
- Graphics output capability
- 10 new instructions!
- Integer dmul
· Some bug
· Errors on pass 2 now highlighted in red.
· Viewing FP memory no longer changes it
· Some more bug fixes
· Yet more bug fixes
· LWU/LUI Instructions fixed
Some WAW error
· Fixed ORI/ANDI/XORI
Mike Scott, April 2012