![logo](/rtybanana/irisc-web/raw/main/images/irisc.png)
An interactive web-based ARMv7 assembly language interpreter and computer architecture simulator.
Start Now!
·
Report Bug
·
Request Feature
Table of Contents
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.
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.
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
- Clone the repo
git clone https://github.com/rtybanana/irisc-web.git
- Install NPM packages
npm i
- Run the command to build and serve
npm run serve
- Memory visualiser
- Usage overview
- Text
- Data
- Heap
- Stack
- Data explorer (byte view)
- Usage overview
- 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).
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.
Distributed under the AGPL License. See LICENSE
for more information.
Rory Pinkney - @rorypinknee - contact@polysoftit.co.uk
Project Link: https://github.com/rtybanana/irisc-web