CPUlator is a Nios II, ARMv7, and MIPS simulator of a computer system (processor and I/O devices) and debugger that runs within a web browser. It is designed as a tool for learning assembly-language programming and computer organization.
To start using CPUlator now, choose a computer system to simulate, then follow the link.
To learn more, try a sample program in the simulator (Help → Sample programs), or see the documentation.
It turns out that writing a CPU simulator (or three) is relatively easy. The difficult part is creating a full-featured debugger with a usable, functional, and efficient user interface. Thus, it makes sense for one simulator to support several instruction sets, while reusing the same debugging and UI infrastructure.
The simulator was first written for Nios II in January 2016, for use at the University of Toronto. Support for ARMv7 was added in fall 2016 because another course at U of T (and one at UBC) teaches ARMv7. MIPS was added in January 2018, due to MIPS' popularity in computer architecture education.
The following is a feature comparison of CPUlator with some popular simulators used for teaching.
|CPUlator||MARS 4.5||QtSPIM 9.1.20||ARMSim# 1.91||ARMSim# 2.1|
|No installation required|
|Platform||Web browser||Java JRE||Windows, OSX, Linux||.NET 3.0||.NET 3.0|
|C or other languages|
|Step over function|
|Step out of function|
|Modify registers||(except pc)|
|Show call stack|
|Runtime calling convention checks|
|Instruction set(s)||MIPS32 r6|
|Memory model||4 GB flat||5 segments||5 segments||1 segment||1 segment|
|Maximum usable memory||2042 MB||4+4+4 MB data|
4+4 MB code
|4+1+0.5 MB data|
256+64 KB code
|64 KB data|
512 MB code
|96 KB data|
512 MB code
|Simulation speed (Minst/second)||13||3||10||2||3|