Interpreter for the Haverford Educational RISC Architecture (HERA) assembly language
Project description
hera-py
A toolkit for the Haverford Educational RISC Architecture (HERA) assembly language, comprising an interpreter, a debugger, an assembler, and a disassembler.
Installation
You can install hera-py with pip:
$ pip3 install hera-py
Usage
After installation, use the hera
command to run a HERA program:
$ hera main.hera
Enter the interactive debugger with the debug
subcommand:
$ hera debug main.hera
Assemble a HERA program into machine code:
$ hera assemble main.hera
Disassemble machine code back into the human-readable HERA syntax:
$ hera disassemble main.hera.lcode
You can also preprocess a HERA program without running it, to see how pseudo-instructions and labels are resolved to HERA code:
$ hera preprocess main.hera
Comparison with HERA-C and Hassem
HERA-C is the current HERA interpreter used at Haverford. It is implemented as a shell-script wrapper around a set of C++ macros that expand HERA instructions into C++ code, which is then compiled by g++.
hera-py improves on HERA-C in the following areas:
- Includes a purpose-built HERA debugger
- Concise and accurate error messages
- Ease of use
- Cross-platform and easy to install
- Configurable with command-line options
- Does not create temporary files
- Command name has six fewer letters than
HERA-C-Run
hera-py also supports several features that HERA-C does not:
- Setting registers to the value of a label
- Detecting stack overflow
- Multi-precision multiplication
- Relative branching by a fixed integer value (e.g.,
BRR(10)
) - Branching by the value of a register (e.g.,
SET(R1, 20); BR(R1)
) - Detecting invalid relative branches
HERA-C has a few features that hera-py does not:
- C-style #define macros (and more generally the ability to embed arbitrary C++ code in HERA programs)
Small to medium-sized programs generally run faster with hera-py than with HERA-C, while very large programs are typically faster with HERA-C.
Hassem is the current HERA assembler used at Haverford. hera-py has better error messages than Hassem, allows the user greater control of output (e.g., with the --stdout
flag), and fixes some Hassem bugs.
Acknowledgements
Thank you to Christopher Villalta for valuable feedback on early iterations of this project.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file hera-py-1.0.7.tar.gz
.
File metadata
- Download URL: hera-py-1.0.7.tar.gz
- Upload date:
- Size: 85.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.22.0 setuptools/39.0.1 requests-toolbelt/0.8.0 tqdm/4.28.1 CPython/3.6.9
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9c816a7e6895ef1bfe0b3294f1970849ceb8d97955001a41af6c914ffaf76c1e |
|
MD5 | 88cf1088ae74a779ef36c58ecb4fd988 |
|
BLAKE2b-256 | 4d1f55b387e8b92a57bd79985b56dae36711637bf99d6dbe07eecc80686ffd76 |
File details
Details for the file hera_py-1.0.7-py3-none-any.whl
.
File metadata
- Download URL: hera_py-1.0.7-py3-none-any.whl
- Upload date:
- Size: 144.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.22.0 setuptools/39.0.1 requests-toolbelt/0.8.0 tqdm/4.28.1 CPython/3.6.9
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | b216dac9c260e23d95785b11d297b25f31a1b6211803d86cb5e3be2fe15bbc9c |
|
MD5 | c3c2d846274f52169f4710116b694f57 |
|
BLAKE2b-256 | db798ba4e4c40d482c9be7012fd764c8eb10303bb449405a403fc2bccb8f2204 |