JASm Compiler und Laufzeitumgebung

Nach der Theorie zu JASm, folgt nun noch etwas mehr Praxis und zwar dergestalt, dass ich hier nun einen in JavaScript implementierten „Compiler“, bzw. Interpreter präsentiere.

Das Tool liest in JASm geschriebenen Quelltext und wandelt diesen in ein für die JASm Maschine geeignetes Speicherabbild um, bzw. führt den Code auch aus und liefert eine Reihe an zusätzlicher Informationen.

JASm Compiler und Maschine

Im Textfeld kann JASm Quellcode oder bereits „compilierter“ Code eingefügt werden. Das Textfeld ist bereits mit einem beispielhaften Code aus den Programmbeispielen vorbelegt, der die Summen a1+b1 und a2+b2 bildet sowie den größten gemeinsamen Teiler von a2 und b2 ermittelt.

Mit dem Button compile kann der Code in ein Speicherabbild umgewandelt, bzw. auf syntaktische Fehler hin untersucht werden. Mögliche Fehler werden unter Errors aufgelistet. Das Ergebnis der Compilierung findet sich als Zahlenkolonne unter Code. Dabei werden jeweils 10 Speicherzellen in einer Zeile ausgegeben. Am Anfang jeder Zeile steht die Nummer des Zehnerblocks.

Source:

Errors:
Code:

  			
Output:
Memory:

  			
Debug:

  			
Available macros:

Der Button compile & run führt zusätzlich den compilierten Code in der JASm Maschine aus. Dabei werden maximal die in Steps angegebene Anzahl an Operationen ausgeführt. Sollte das Programm danach noch nicht vollständig abgearbeitet sein, kann man mit „continue“ jeweils einen weiteren Zyklus von Steps Operationen anstoßen.

Sofern der Code eine Ausgabe produziert, findet sich das Ergebnis unter Output. Abschließend, so das Programm ordnungsgemäß terminiert, wird ein Speicherabbild unter Memory im gleichen Format wie das Compilat ausgegeben. Zudem wird unter Debug der vollständige Programmablauf (Schritt, Adresse, Befehl, Adresse des ersten Parameters und Speicherinhalt, Adresse des zweiten Parameters und ggf. Inhalt) dargestellt.

Mit dem Button format kann der Quelltext strukturiert in drei Spalten dargestellt werden, oder aber auch in unterschiedlichen Stufen komprimiert werden. Hierzu ist im Auswahlfeld der gewünschte Level auszuwählen. beautify bringt Struktur in den Quellcode.

Add adresses fügt im Quellcode Marker zu Beginn jeder Zeile ein, die zugleich die erste Speicheradresse der jeweiligen Zeile darstellt. Dies ist eine nützliche Option im Rahmen der Fehlersuche.

Im Modus compression werden überflüssige Leerzeichen entfernt, die Struktur und Kommentare allerdings beibehalten. max. compression hingegen entfernt auch Leerzeilen und Kommentare. Die Komprimierungsoptionen liegen jeweils auch in der Fassung vor, die den Code dergestalt formatiert, dass er in JavaScript Code genutzt werden kann.

Hinweise

Das Interface ist noch recht simpel gehalten und weder optisch noch funktional besonders ansprechend. Dies wird sich ggf. noch ändern. Auch ist die zugrundeliegende Implementierung noch als in der Version 0.9 vorliegend zu betrachten.

JASm geht bei der Maschine davon aus, dass es sich um eine Maschine mit potenziell unendlichem Speicherplatz handelt – dies ist natürlich in der Praxis nicht realisierbar, vor allem nicht im Umfeld einer JavaScript basierenden Umgebung. Durch Ausführen von fehlerhaftem Code kann eine extreme Last auf dem Computer entstehen, die ggf. auch den Browser einfrieren oder abstürzen lässt. N. B.: Ein JASm Programm terminiert ausschließlich (!), wenn der Programmzeiger (Zelle 0) auf 0 gesetzt wird.

Dieses Tool überträgt keine Daten an den Server. Alle Rechenoperationen finden im lokalen Browser statt. Es ist lediglich zu Test- und Schulungszwecken geeignet. Allerdings gehe ich davon aus, dass eh niemand JASm in einem produktiven Einsatz verwendet.

Und weiter?

Das auf dieser Seite gezeigte Tool wird bei Gelegenheit noch in ein paar kleineren Punkten weiterentwickelt. Insbesondere die Möglichkeit der Tastatureingabe (Adresse -1) muss noch realisiert werden.

Ansonsten wird es zu einem späteren Zeitpunkt noch ein paar weitere, komplexe Codebeispiele für JASm geben

Beitrag vorlesen lassen

Kommentar hinterlassen

Nutze dieses Kommentarfeld um deine Meinung oder Ergänzung zu diesem Beitrag kundzutun. Verhalte dich bitte respektvoll und höflich! Kommentare werden vor der Veröffentlichung in der Regel moderiert und bei Verstößen gegen geltendes Recht, die guten Sitten, fehlendem Bezug oder missbräuchlicher Verwendung nicht freigegeben oder gelöscht.
Über die Angabe deines Namens, deiner E-Mail Adresse und deiner Webseite freuen wir uns, doch diese Felder sind optional. Deine E-Mail Adresse wird dabei zu keinem Zeitpunkt veröffentlicht.

Um mit dem Betreiber dieser Seite nicht-öffentlich in Kontakt zu treten, nutze die Möglichkeiten im Impressum.