insou22 / mipsy

Education-focused MIPS Emulator written in Rust.
87 stars 13 forks source link

Mipsy

A MIPS32 emulator, written in Rust.

Mipsy is entirely intended for educational purposes - it is by no means a complete, correct, or rigorous implementation of the MIPS32 specification. It tries to implement most common MIPS32 [psuedo]instructions, with correct behaviour, however many features are left out in the interests of simplicity, agility of development, and a keen focus on educational value.

Note that mipsy focuses specifically on the education of assembly programming, as opposed to the education of hardware, or how hardware functions. It is suited for introductory systems-programming courses, where students can learn a simple assembly language such as MIPS, in a simulator that attempts to provide helpful feedback, powerful debugging tools, and pre-empt common bugs -- all of which aim to give the student a better learning experience.

Features

Features you will NOT find include:

Features you (hopefully) will be pleased to find in mipsy:

This project is a work-in-progress, but is in a reasonably usable state -- make sure you understand what mipsy does and does not provide before deciding if it is right for you!

Installation

  1. Install the latest stable rust toolchain with rustup at https://www.rust-lang.org/tools/install
  2. git clone https://github.com/insou22/mipsy.git && cd mipsy
  3. cargo build --package mipsy will build a binary for your machine into ./target/debug/mipsy
  4. Run mipsy using ./target/debug/mipsy [mips_file]
  5. (Optional): Build an optimized release version with cargo build --release --package mipsy. Your binary will be in ./target/release/mipsy