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.
- Wird beim Assembler die Anweisung ORG nicht angegeben
erhält man nicht definierte Ergebnisse. Eigentlich sollte der
Programmcode dann ab Adresse 0 erzeugt werden.
- 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.
- 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.