Skip to main content

Interpreter for the Haverford Educational RISC Architecture (HERA) assembly language

Project description

hera-py

Build Status Coverage Status PyPI

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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

hera-py-1.0.7.tar.gz (85.0 kB view details)

Uploaded Source

Built Distribution

hera_py-1.0.7-py3-none-any.whl (144.2 kB view details)

Uploaded Python 3

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

Hashes for hera-py-1.0.7.tar.gz
Algorithm Hash digest
SHA256 9c816a7e6895ef1bfe0b3294f1970849ceb8d97955001a41af6c914ffaf76c1e
MD5 88cf1088ae74a779ef36c58ecb4fd988
BLAKE2b-256 4d1f55b387e8b92a57bd79985b56dae36711637bf99d6dbe07eecc80686ffd76

See more details on using hashes here.

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

Hashes for hera_py-1.0.7-py3-none-any.whl
Algorithm Hash digest
SHA256 b216dac9c260e23d95785b11d297b25f31a1b6211803d86cb5e3be2fe15bbc9c
MD5 c3c2d846274f52169f4710116b694f57
BLAKE2b-256 db798ba4e4c40d482c9be7012fd764c8eb10303bb449405a403fc2bccb8f2204

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page