Giter Site home page Giter Site logo

mipsy's Introduction

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:

  • Delay slots
  • Big-Endian mode
  • Kernel mode
  • An extensive trap file
  • Conditional Branch Likely Instructions
  • Floating point support (yet -- planned for future)
  • ... more to be included here ...

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

  • Helpful and explanatory compilation errors
  • Helpful and explanatory runtime errors
  • Runtime checks - uninitialized memory, registers, etc.
  • A powerful and intuitive debugger with readline support
  • Time travel debugging
  • Wasm in-browser client (a la QtSpim)
  • ... more to be included here ...

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

mipsy's People

Contributors

insou22 avatar spanishpear avatar joooooooooooooooooooooooooooooooooooosh avatar dylan-brotherston avatar abiramen avatar xaviercooney avatar qantas94heavy avatar nilaos avatar mx-mw avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.