A complete virtual machine simulator based around the MIPS R2/3000 microprocessor.
Please report any bugs you find by creating an issue ticket here on GitHub. Make sure you include steps on how to reproduce it.
µMPS is an educational computer system architecture and an accompanying emulator designed from the ground up to achieve the right trade-off between simplicity and elegance on one side, and realism on the other. This makes µMPS ideally suited for use in education, such as hands-on operating systems or computer architecture university courses.
The µMPS processor implements the MIPS I instruction set, and can therefore be supported out of the box by existing MIPS compilers. The architecture details a complete set of I/O devices (terminals, disks, flash devices, printers, and network adapters) that feature a clean, consistent, programming interface.
The emulator comes with built-in debugging features and an easy to use graphical user interface. Apart from the emulator itself, several support utilities are provided that can get you quickly started in developing programs for µMPS.
µMPS is now in its third iteration: µMPS3. Due to the pedagogically driven changes implemented in µMPS3, this latest version is NOT backward compatible with either µMPS2 or µMPS(1).
µMPS3 was already packaged for the distros listed below. If you can't find your distro here, you will have to build from source.
If you create a package for any other distribution, please consider contributing the template.
If you are using Ubuntu 21.04 Hirsute Hippo, 21.10 Impish Indri or 22.04 Jammy Jellyfish, you can install the official µMPS3 package using:
$ sudo apt install umps3
If you are using Ubuntu 20.04 Focal Fossa, 18.04 Bionic Beaver or 16.04 Xenial Xerus (Checking your Ubuntu Version) or derivatives (e.g. Linux Mint), you need to:
- enable Universe
$ sudo add-apt-repository universe
$ sudo apt update
- add the virtualsquare/umps PPA
$ sudo add-apt-repository ppa:virtualsquare/umps
$ sudo apt update
- install
$ sudo apt install umps3
If you are using Debian 11 Stable ("bullseye"), Debian 12 Testing ("bookworm") or Debian Unstable ("sid"), you can install the official µMPS3 package using:
$ sudo apt install umps3
If you are using Debian 10 Oldstable ("buster"), you need to:
- add the virtualsquare/umps PPA for the Ubuntu 18.04 (Bionic Beaver) version to your Apt sources configuration file:
$ echo 'deb http://ppa.launchpad.net/virtualsquare/umps/ubuntu bionic main' | sudo tee /etc/apt/sources.list.d/virtualsquare-ubuntu-umps-bionic.list
- import the signing key:
$ sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 046AB1F65C49333A
- re-synchronize the package index files:
$ sudo apt update
- install
$ sudo apt install umps3
If you are using Arch Linux or derivatives (e.g. Manjaro), you can install the AUR package umps3-git to get the latest version, or umps3 for the latest stable release.
Please report any problems you run into when building the project.
A compiler with C++11 support (clang-3.3+, gcc-4.8+), cmake 3.5+, git
Qt 5.5+
libelf
boost 1.34+
(headers)libsigc++ 2.0
Apart from the dependencies listed above, you will also need a MIPS cross toolchain in your PATH.
CMakelists.txt will do its best to detect one; if that fails, you can pass the toolchain tool prefix to cmake
using -DMIPS_TOOL_PREFIX=PREFIX
.
Known prefixes are:
mips-sde-elf-
mips64-linux-gnu-
mips(el)-elf-
mips(el)-linux-
mips(el)-linux-gnu-
For example, on Debian and derivatives (e.g. Ubuntu, Pop!_OS):
$ sudo apt install git build-essential cmake qtbase5-dev libelf-dev libboost-dev libsigc++-2.0-dev gcc-mipsel-linux-gnu
On Fedora:
$ sudo dnf install git make gcc-c++ cmake qt5-qtbase-devel qt5-qtsvg elfutils-libelf-devel boost-devel libsigc++20-devel gcc-mips64-linux-gnu
$ git clone https://github.com/virtualsquare/umps3
$ cd umps3
$ mkdir build
$ cd build
$ cmake ..
$ make
$ sudo make install
You should now be able to launch µMPS3 via the application menu of your desktop environment, or by typing umps3
at the command line.
You should be able to launch µMPS3 in headless mode by typing umps3
at the command line in this way:
$ umps3 "/absolute/path/to/machine_config.json" --headless
N.B.: if you use relative paths in the config be sure to launch µMPS3 in the same directory.
From the root of the binary tree run:
$ sudo make uninstall
N.B.: "install_manifest.txt" is generated during the installation process.
How to get started using µMPS3
µMPS3 is licensed under the GPL-3.0 license. See LICENSE for more information.
Papirus Icons by Papirus Development Team is licensed under GPL-3.0
Logo and all other icons derived by Mattia Biondi from Papirus Icons