QtSpim alternative: build the processor that runs the code
SPIM, by James Larus, is a simulator that reads and runs MIPS32 assembly programs: it implements almost all of the MIPS32 assembler-extended instruction set (leaving out most floating-point comparisons and rounding modes and the memory system's page tables) and provides a simple debugger and a minimal set of operating system services. It runs assembly source, not compiled binaries. QtSpim is its windowed version, built with the Qt framework, with the same source code and interface on Windows, macOS and Linux; spim is the terminal version. It is open source under a BSD license. Its home page now says that Spim is no longer supported, as its author retires, and invites users to fork it. QtSpim runs MIPS programs on a processor you never see inside; digiwleea has you build a processor yourself, gate by gate.
What QtSpim is good at
Running MIPS assembly for a computer organization course with little ceremony: it reads an assembly program and executes it, with a simple debugger and the minimal operating system services that course programs use, in a native app on all three desktop systems. The main alternative is MARS, a Java IDE with an editor, backward stepping and extra tools; QtSpim is the lighter, native one. (digiwleea is an independent project, not affiliated with SPIM or its author.)
How digiwleea is different
QtSpim and MARS model a processor from the programmer's side. digiwleea shows the other side: in the browser you build NOT and NAND from CMOS transistors, then adders, an ALU, registers, RAM, a program counter and a control unit, through a 40+ level course where every part is checked against its truth table, with an AI tutor (Wleea). The CPU you end with is much smaller than MIPS: an 8-bit accumulator machine whose capstone runs a stored LOAD, ADD, STORE, HALT program, with the parts for SUB, JMP, JZ and OUT built in Act IV. It will not run MIPS code, but it shows what a register file, an ALU and the decoding of an opcode are made of. The register file page builds the kind of part that holds MIPS's 32 registers, in miniature.
| QtSpim | digiwleea | |
|---|---|---|
| Focus | Running MIPS32 assembly | Digital logic from transistors to a simple CPU |
| The CPU | Simulated MIPS32, not shown inside | Built by you: an 8-bit accumulator machine |
| Runs on | Windows, macOS, Linux (Qt desktop app) | Any modern browser |
| Status | Open source, BSD license; no longer supported by its author | Actively developed |
| Price | Free | Free lab and Act I; Premium for the full course |
QtSpim vs MARS
| QtSpim | MARS | |
|---|---|---|
| Made by | James Larus | Pete Sanderson and Ken Vollmar |
| Runs as | A native Qt app for Windows, macOS and Linux | A Java application |
| Instruction set | Almost all of MIPS32, assembler-extended | MIPS32, with floating point |
| Debugging | A simple debugger | An editor, plus stepping forward and backward |
MARS was made for teaching with Patterson and Hennessy's Computer Organization and Design; the companion page for that book links each of its hardware chapters to a live circuit here.
No sign-up is needed to start: open the lab and place your first transistor, or read the free theory course. The account (and the AI tutor) are optional.
More comparisons: CPU and assembly simulators
See for yourself: build a logic gate from transistors in the simulator, then follow the path from sand to an 8-bit CPU.
Open the digiwleea lab →Frequently asked
What is QtSpim?
QtSpim is the windowed version of SPIM, James Larus's simulator for MIPS32 assembly programs. It runs on Windows, macOS and Linux with the same interface, and it is open source under a BSD license.
Is QtSpim still maintained?
Its home page says Spim is no longer supported: the code has been stable for many years, and as its author retires he invites users to fork it and fix bugs themselves.
What is the difference between QtSpim and MARS?
Both run MIPS assembly. QtSpim is a light native app that loads assembly files; MARS is a Java IDE by Pete Sanderson and Ken Vollmar with its own editor and the ability to step backward.
Can QtSpim run compiled programs?
No. SPIM reads and executes assembly language source, not binary (compiled) programs.