# Jupiter

![](https://595567429-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Lo2zgB0gRDW51PJoTqD%2F-LoWEFajW3nevjYnJyx0%2F-LoWEJU-QKcyziWQ2k7v%2Fjupiter.png?alt=media\&token=b67070dc-9036-498c-bcfc-57f40b13ebf0)

**Jupiter** is an open source and education-oriented RISC-V assembler and runtime simulator. It is written in Java and capable of simulate all the instructions of the base integer ISA (`I` extension) plus the `M` and `F` extensions (**RV32IMF**), including all the pseudo-instructions described in the user-level instruction set manual. It was developed taking into account that it could be used in various courses such as: *Computer Architecture, Compilers and Assembly Programming*.

### Main Features

* **User Friendly**: Jupiter was designed focused on education and for all the people that are getting to know the RISC-V architecture. It places for priority the user experience. Jupiter has two modes of operation (*Command Line Interface* and *Graphical User Interface*) and both of these were developed to be intuitive and easy to use.
* **Modularity**: Jupiter can assemble and simulate several files at once, not everything has to be one file of 1,000 lines of code. Simply indicate by a global label what is the main starting point of the program. This permits modularity and enables the creation of projects and laboratories more easily.
* **Feedback**: People using Jupiter gets feedback on what they are doing wrong <img src="https://github.githubassets.com/images/icons/emoji/unicode/1f4af.png" alt="100" data-size="line">. The simulator shows different types of errors like: syntax errors, when trying to access reserved memory or when trying to write to a read-only memory.
* **Cross-platform**: Jupiter is available for **Linux** (*Ubuntu*), **macOS** and **Windows**.

### Screenshots

![GUI Mode](https://595567429-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Lo2zgB0gRDW51PJoTqD%2F-Lo5wC8tqGXQlzolGuP1%2F-Lo5wMe2seed3cXRGRBE%2Fgui.png?alt=media\&token=755c23d4-8eb5-44d9-96a7-26ba2a4bad65)

![CLI Mode](https://595567429-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Lo2zgB0gRDW51PJoTqD%2F-Lo5wC8tqGXQlzolGuP1%2F-Lo5wVqJ1zkMr5GQhMAE%2Fcli.png?alt=media\&token=2cb7f722-ebb4-4933-83c0-5e8a6028a762)

### Why this name, Jupiter ?

Traditionally other simulators of this type have used planet names, for example the famous educational simulator for the *MIPS* architecture **MARS** or the Berkeley's web-based simulator **Venus**. The name **Jupiter** was chosen because of this traditional reasons and also because this planet represents in some sort the number **5** (*is the fifth planet from the Sun and the largest in the Solar System)*, in contrast with RISC-V that is the 5th generation of the ISA originally designed in the 90's.
