Logo - Japanese Zodiac Sign

HASI

Ein Assembler, Simulator und Debugger für einen theoretischen Assemblerdialekt.

de en

Hypothetical Machinecode Assembler and Simulator"

Im Rahmen eines Studienprojekts habe ich dieses Programm geschrieben. Wie der Name vermuten läßt handelt es sich um eine komplette Entwicklungsumgebung für einen hypothetischen Assembler-Dialekt. Das Programm ist plattformunabhängig mit der QT GUI-Bibliothek realisiert. Da die Lizenzgebühren für die Windows Version relativ hoch sind, sind eigentlich nur Versionen, die mit der unter der GPL-Lizenz stehenden freien Version der QT zu übersetzen sind, im Umlauf.

Funktionsumfang

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

Der Simulator unterscheidet sich dahingehend vom Interpreter, daß dieser in die GUI eingebettet ist. Der Interpreter läßt sich von der Kommandozeile aufrufen und für HASI übersetzte Programme können ablaufen. Da die Möglichkeit besteht eigene Ein-/Ausgabe Geräte zu implementieren, lassen sich beliebige Systemfunktionen integrieren.

Zur Entstehung des Programms

Das Projekt wurde während meines Studiums an der Fachhochschule Südwestfalen umgesetzt und befindet sich derzeit in den Praktikas für das Fach "Grundlagen der Informatik" im Einsatz.

Download

Folgende Binärpakete in der Version 1.1pre2 stehen zum Download bereit:

Zusätzlich gibt es die Möglichkeit die Quellen des Programms der neuen Version 1.1pre2 herunterzuladen. Das Programm steht unter der BSD-Lizenz. Es ist also jegliche Nutzung möglich. Falls Verbesserungen vorgenommen werden, würde ich gerne davon erfahren und diese ggf. in das Projekt einpflegen.

Weiterhin sind natürlich die Quellen und übersetzte Pakete der vorherigen Versionen hier abrufbar:

Bekannte Bugs

Beim Erstellen der Binärpakete sind mir noch ein paar Fehler aufgefallen. Damit keine Bugreports doppelt auftreten hier eine Liste mit den bekannten Fehlern:
  • Assembler
    • Wird beim Assembler die Anweisung ORG nicht angegeben erhält man nicht definierte Ergebnisse. Eigentlich sollte der Programmcode dann ab Adresse 0 erzeugt werden.
      Ab Version 1.1pre2 behoben.
  • GUI
    • Stellt man eine Registeranzeige mit einer negativen Zahl im Hexadezimalmodus von Unsigned auf Signed, wird die Zahl nicht korrekt angezeigt. Beim Umstellen einer negativen Zahl von Signed auf Unsigned (im Hexadezimalmodus) wird der Wert auf 0 gesetzt.
      Ab Version 1.1pre2 behoben.