ws-Assembler - Ein Compiler für Whitespace Assembler

Inhaltsverzeichnis[Verbergen]

1. Beschreibung

Wenn Ihr den Namen dieses Projektes seht wird euch wahrscheinlich nicht ganz klar sein was denn dieses Programm können soll. Eigentlich ist es ganz einfach: Wir schreiben ein Programm in einer speziellen Assembler Sprache, übergeben das meinem Programm, und erhalten als Ausgabe eine leere Textdatei. Jetzt werdet ihr euch sicher fragen was das denn für einen Sinn haben sollte Laughing

Jetzt sollten wir einmal eine Blick auf die Dateigröße werfen und können sehen das die Datei doch nicht leer ist. Das liegt daran dass der Compiler aus dem Assembler Quelltext einen Maschinensprachen ähnlichen Code in der Programmiersprache Whitespace erzeugt. Diese esoterische Programmiersprache wurde mit dem Ziel entworfen, möglichst Farbsparend ausdruckbar zu sein, weshalb der Code nur aus den Whitespace Zeichen Tabulator, Leerzeichen und Zeilenumbruch besteht. Alles andere wird ignoriert und kann deshalb für Kommentare verwendet werden.

Weitere Informationen zu dieser Sprache gibt es zum Beispiel auf der offiziellen Homepage oder auf Wikipedia.

2. Entstehung

Da man ja im allgemeinen doch eher keine esoterischen Programmiersprachen wie Whitespace verwendet, werdet ihr euch sicher fragen weshalb ich dann einen Compiler für genau so eine Sprache geschrieben habe. Der Auslöser dafür war eine Aufgabe für meine Studium, bei der wir uns mit einer von vier vorgegeben esoterischen Programmiersprache beschäftigen und ein einfaches Programm damit schreiben sollten. Da mir das direkt in Whitespace doch etwas zu mühsam würde habe ich mich dann daran gemacht einen Compiler, wenn ich ihn als solche bezeichnen darf Wink, zu entwickeln. Das beiliegende Hangman war dann das Programm was ich damit geschrieben habe.

3. Verwendung

Zuerst sollten wir natürlich ein Programm schreiben. Ein sehr einfaches Programm könnte in etwa so ausschauen:

include io

push 0 # wir brauchen keinen Platz auf dem Heap
call io_init
pushs "Hello World"
call printnl
exit

Die 'io'-Bibliothek können wir dazu verwenden einfacher Texte auszugeben und einzulesen. Für die Verwendung müssen wir nur zuerst eine Zahl auf den Stack legen die sagt wie viele Variablen wir auf dem Heap verwenden wollen. Dabei dürfen wir nicht das Register an der Stelle 0 verwenden, da dieses von der 'io'-Bibliothek benötigt wird.

Jetzt müssen wir nur mehr das Programm dem Compiler übergeben. Das geht ganz einfach mit:

./ws-asm demo/hello_world.wsa

Dannach sollte sich im Ordner 'demo' die compilierte Datei 'hello_world.wsa' befinden. Diese können wir jetzt mit einem Whitespace-Interpreter ausführen. Unter Ubuntu geht das zum Beispiel mit dem Paket 'whitespace' das das Programm 'wspace' zur Verfügung stellt:

wspace demo/hello_world.ws

4. Weitere Informationen

Das war nur einmal ein kurzer Einstieg in dieses Projekt. Weitere Informationen und auch Downloads gibt es auf den folgenden Seiten:

Aktualisiert ( Montag, 05. Oktober 2009 um 11:58 Uhr )