CPUlator Computer System Simulator

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.

Choose a system to simulate




Demo (Why screenshot when a demo is just as easy?)

Nios II, ARMv7, and MIPS Simulator?

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.

Comparison Chart

The following is a feature comparison of CPUlator with some popular simulators used for teaching.

CPUlatorMARS 4.5QtSPIM 9.1.20ARMSim# 1.91ARMSim# 2.1
No installation required
PlatformWeb browserJava JREWindows, OSX, Linux.NET 3.0.NET 3.0
Code completionn/an/an/a
C or other languages
Reverse step
Step over function
Step out of function
Modify registers(except pc)
Modify memory
Show call stack
Runtime calling convention checks
Data watchpoints
Instruction set(s)MIPS32 r6
Nios II
Self-modifying codemaybemaybe
Nios II
Memory model4 GB flat5 segments5 segments1 segment1 segment
Maximum usable memory2042 MB4+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
I/O devices
File I/O
Other devices
Simulation speed (Minst/second)1331023

Looking for the previous version?

CPUlator v1 is here.