Skip to content

rtybanana/irisc-web

Repository files navigation

Contributors Forks Stargazers Issues MIT License LinkedIn


logo

iRISC

An interactive web-based ARMv7 assembly language interpreter and computer architecture simulator.
Start Now! · Report Bug · Request Feature

Table of Contents
  1. About The Project
  2. Getting Started
  3. Usage
  4. Roadmap
  5. Contributing
  6. License
  7. Contact
  8. Acknowledgments

About The Project

iRISC is an ARMv7 assembly language interpreter and computer architecture simulator. The idea behind this application is to expose the state of the hardware after each line of an assembly program is executed. This allows the concepts which prop up the much higher level programs to be more easily visualised. The interface is built to be as interactive as possible, reacting in real time to user input and exposing more detailed information on mouseover. Emphasis is placed on exploration to learn how a computer operates. There is also an accompanying tutorial which is currently work-in-progress. If you think this application is of interest to you, you can access my hosted version here.

This project is based on a similar project I created as part of my masters year of study. That project is a GUI C++ application, so, as you can imagine, compilation and distribution - kind of a nightmare. However, I was quite impressed with how well my desktop application turned out, so I decided to rewrite the whole thing for the web.

screenshot

Built With

Getting Started

This is an example of how you may give instructions on setting up your project locally. To get a local copy up and running follow these simple example steps.

Prerequisites

This is an example of how to list things you need to use the software and how to install them.

  • npm
    npm install npm@latest -g

Installation

  1. Clone the repo
    git clone https://github.com/rtybanana/irisc-web.git
  2. Install NPM packages
    npm i
  3. Run the command to build and serve
    npm run serve

Roadmap

  • Memory visualiser
    • Usage overview
      • Text
      • Data
      • Heap
      • Stack
    • Data explorer (byte view)
  • Assembly visualiser
    • Add assembly of shift instructions
  • Simulation state history
    • Snapshot history modal
    • Ability to reinstate old simulator states (go backwards)
  • Support for external C stdlib and stdio calls
    • putchar()
    • puts()
    • printf()
      • Support for %c, %d, %u and %s
      • Support for other specifiers
    • gets()
    • scanf()
      • Support for %c, %d, %u and %s
      • Support for other specifiers
    • dynamic allocation
      • malloc()
      • calloc()
      • realloc()
      • free()
  • Tutorial
    • Introduction
    • Basics (instructions, immediate representation)
    • Intermediate (loops, conditionals, static allocation)
    • Advanced (AAPCS, dynamic allocation)
    • Challenges and quizzes

See the open issues for a full list of proposed features (and known issues).

Contributing

I am not accepting pull requests at this time. I am not well researched on the topic, but, if I can generate some interest, I would like to distribute this software commercially to institutions. I don't want to complicate the issue by introducing questions as to whether or not I own some portion of the code. I am happy to take feature requests, bug reports, etc. Anything that will improve your experience with the app. But until I am more clear on the direction I want to take this software in, I would like to implement these myself.

License

Distributed under the AGPL License. See LICENSE for more information.

Contact

Rory Pinkney - @rorypinknee - contact@polysoftit.co.uk

Project Link: https://github.com/rtybanana/irisc-web