Station - Die Bonsai-Assemblersprache
Die Sprachelemente
Die Bonsai-Assemblersprache dient dazu, den Bonsai-Rechner oder einen Murmelrechner zu steuern (vgl. ???).
Die zu verarbeitenden Daten sind in Registern abgelegt, die von 0 an durchnummeriert sind. Als Daten sind hier nur natürliche Zahlen erlaubt.
Die Verarbeitung der Daten erfolgt mit einem Programm. Das Programm besteht aus durchnummerierten Befehlen. Beachte, dass es nur 5 verschiedene Befehle gibt. Diese Befehle und ihre Bedeutung werden in der folgenden Tabelle kurz erläutert.
Befehl | Bedeutung |
---|---|
i: inc x | erhöhe Register x um 1; gehe zu Zeile i+1 |
i: dec x | verringere Register x um 1; gehe zu Zeile i+1 |
i: jmp x | gehe zu Zeile x |
i: tst x | falls Register ungleich 0, dann gehe zu Zeile i+1, ansonsten zu Zeile i+2 |
i: hlt | beende die Ausführung |
Um ein Programm und die zu verarbeitenden Daten darzustellen, benutzen wir die folgende Quelltext-Darstellung:
0: tst 1
1: jmp 3
2: jmp 6
3: dec 1
4: inc 0
5: jmp 0
6: hlt
#3
#5
Der Bonsai-Quelltext besteht aus dem Programmteil und einem Datenteil. Im Programmteil sind die durchnummerierten Befehle aufgelistet. Im Datenteil sind der Reihe nach die Inhalte der durchnummerierten Register dargestellt.
Ziel ist es, eine Verarbeitungseinheit zur Ausführung von Bonsai-Assemblerprogrammen, die in Form von Bonsai-Quelltexten übergeben werden, zu entwickeln. Die Verarbeitungseinheit soll also die Sprache der Bonsai-Quelltexte verarbeiten.
Probleme bei der Verarbeitung von Bonsai-Quelltexten
Zunächst ergibt sich das Problem, welche Quelltexte korrekte Bonsai-Quelltexte sind. Hier einige Beispiele für solche Quelltexte:
Darf man die Befehle auch anders schreiben?
0: tst 1
1: JMP 3
2: jmp 6
3: Dec 1
4: Inc 0
5: jmp 0
6: hlt
#3
#5
Darf man Leerzeichen und Zeilenumbrüche weglassen oder nach Belieben hinzufügen?
0:tst1
1: jmp 3
2:
jmp 6
3: dec 1
4: inc 0
5: jmp 0
6: hlt
#3#5
Darf man weitere Trennzeichen benutzen?
0: tst 1 | 1: jmp 3 | 2: jmp 6
3: dec 1
4: inc 0
5: jmp 0
6: hlt
#3#5
Weitere Probleme ergeben sich bei der Ausführung von Befehlen.
Was geschieht, wenn ein Register mit dem Inhalt 0 dekrementiert werden soll?
0: dec 0
1: hlt
#0
Was geschieht, wenn der hlt-Befehl fehlt?
0: dec 0
#4
Aufgabe 1
Welche der beschriebenen Probleme sind syntaktische Probleme, welche semantische Probleme? Formuliere selbst weitere syntaktische und semantische Probleme.
Vorgehensweise
Zur Lösung der syntaktischen Probleme wird zunächst die Sprache der Bonsai-Quelltexte (kurz Bonsaispache) zunächst präzisiert.
Die semantischen Probleme werden gelöst, indem ein konkretes Ausführmodell erstellt wird.