Logo - Japanese Zodiac Sign

HASI

A assembler, simulator and debugger for a theoretical machine language.

de en

Hypothetical Machinecode Assembler and Simulator

To complete the software engineering course during my study time this project was done by me. The program is a complete development environment for a hypothetical machinecode language. The program is written with portability in mind and therefore uses the QT gui-library. Only binary packages for systems having a GPL licenced version of the QT are made by me. So a Microsoft Windows version could be done but will not be available at this location.

Features

  • Editor
  • External Assembler
  • Simulator
    • Debugger
    • Memory Inspector
    • Stack Inspector
    • Disassembler
  • Interpreter

The simulator is different to the interpreter because it is embedded into the GUI. The interpreter can be used via CLI and programs assembled by the assembler can run with it. There is an interface for Input/Output devices. With these classes all system functions of a normal computer system could be implemented. Unfortunately this has to be done at compile time, dynamic loading of such modules is not yet supportet.

Some Information About The History Of The Program

The project was done while I studied at the Fachhochschule Südwestfalen, University of applied Science and is used currently for the course "Grundlagen der Informatik".

Download

The following binary precompiled packages of version 1.1pre2 are available for download:

In addition it is possible to download the sources of the current version 1.1pre2. Suggestions and bug reports are welcome. I will try to make the next version better and will consider feedback of any kind.

The sources and binary packages of the older versions are still available:

Known Bugs

I found some bugs while creating the packages listed above. Here is a list of the known bugs to avoid dublicate bug reports:

  • Assembler
    • Is the meta instruction ORG not the first instruction in the file the starting point of the object file is not defined. The object code should be assembled from address 0.
      Fixed in version 1.1pre2.
  • GUI
    • If in one of the register indicators while beeing in the hexadecimal mode an unsigned number is switch to a signed number, the number will not be displayed correct. If a negative signed number is switched to unsigned the register indicator shows the value 0.
      Fixed in version 1.1pre2.