This repository contains the source code for a simple assembler/compiler for our educational processor as well as an emulator.
super32assembler is an assembler, written in Python.
super32emu is an emulator, written in Python as well. Qt is used for the GUI.
These instructions will help you to get your environment ready to build, develop and run the project on your local machine.
You'll need Python and Pip installed on your machine.
The Python packages are currently not available via PyPi. To install the package you first have to clone the git repository:
git clone https://github.com/xsjad0/Super32.gitAfter you successfully cloned the repository, switch to the latest release and run the installation process via pip
git checkout X.Y.Z
pip install ./super32utils ./super32assembler ./super32emuAlternatively, use the provided packages.py script:
git checkout X.Y.Z
python packages.py -iTake a look at the instructionset of the Super32 processor. Also, feel free to include these fancy assembler directives to improve your code.
Here are some rules you always have to keep in mind when you write some assembler code:
Your code always has to start with
ORG [address]
START
and end with an
END
assembler directives, where address MUST be greater than and be able to divide by 4.
Define constants in your memory like this:
DEFINE 0
For easier referencing the constants in your code, put a label in front of your constant:
[constantname]: DEFINE [value]
See the examples/ directory
Provide the path to an assembler code file as command line argument:
super32assembler example_code.s32If you want to define a custom output name / path, use the '-o' argument flag. All available options are listed in the table below.
| Option | Default | Description |
|---|---|---|
| -h/--help | - | Display help information |
| -o/--output | <input-file>.o | Custom output name / path |
| -g/--generator | lines | Specify output format. use lines to generate 32bit machine-code each line. Use stream to generate one single line machine-code. |
| -a/--architecture | single | Specify processor architecture. use single to select single-memory architecture. Use multi to select dual-memory architecture. |
Start it with:
super32emuInstall the required packages:
pip install -r requirements.txt
pip install -r requirements/development.txtInstall our packages as well (Super32 Emulator has dependencies on assembler and utils):
pip install ./super32utils ./super32assemblercd super32assembler && python -m super32assembleror
cd super32emu && python -m super32emuWe use pytest for testing. To run these test use:
pytest test_{test_name}.pyRun this command on the operating system for which you would like to create a standalone executable for:
python packages.py -sWe use SemVer for versioning. For the versions available, see the releases on this repository.
- Marcel Freiberg - freib98
- Marius Schenzle - xsjad0
- Thomas Schöller - MaxAtoms
- Noah Ströhle - DrNochi
- Jan Dieterich - SirFussel
- Simon Luib - Ferocio
This project is licensed under the MIT License - see the LICENSE file for details
