Compilerbau-Praktikum 2019
Praktikumsthemen
1. Lexikalische Analyse
2. Syntaktische Analyse
3. Konstruktion des abstrakten Syntaxbaums
4. Semantische Analyse
5. Laufzeitorganisation
6. Codegenerierung
Praktikum und Notengebung
Aufgabe: Konstruktion eines SPL-Compilers für die RISC-Plattform ECO32
Organisation: Einzelarbeit oder Zweiergruppen
Zwei akzeptierte Hausübungen sind Voraussetzung für die
Zulassung zur Klausur.
Die in der Veranstaltung erzielte Note wird alleine durch
das Klausurergebnis bestimmt.
Bei der Klausur sind keine Hilfsmittel zugelassen.
Referenzimplementierung
Auf den MNI-Servern 'saturn.mni.thm.de' oder 'proteus.mni.thm.de' finden Sie
die
Referenzimplementierung des Compilers für
Linux, die Laufzeitbibliothek,
den Assembler, den Linker
und den ECO32-Simulator sowie Hinweise zur Benutzung.
Diese Ressourcen sind nicht über einen Webserver verfügbar,
sondern können per sftp, scp oder rsync aus dem Verzeichnis
/home/hg52/spl abgerufen werden oder nach einem ssh-Login auf einem dieser MNI-Rechner direkt
benutzt werden.
Beispiel für ssh-Login mit Benutzer-ID user1234 von der Kommadozeile:
$ ssh -l user1234 saturn.mni.thm.de
user1234@saturn.mni.thm.de's password: StrengGeheim
saturn:~$ cd /home/hg52/spl
saturn:~/spl$ ls -l
insgesamt 14
-rwxr-xr-x+ 1 hg52 4552 3190 27. Mär 16:18 bigtest.spl
drwxr-xr-x+ 2 hg52 4552 7 27. Mär 16:14 bin
-rwxr-xr-x+ 1 hg52 4552 206 27. Mär 16:18 compile.sh
drwxr-xr-x+ 2 hg52 4552 6 27. Mär 16:14 lib
-rw--wx-wx+ 1 hg52 4552 432 27. Mär 16:29 README
-rwxr-xr-x+ 1 hg52 4552 50 27. Mär 16:22 run.sh
Kopieren vom entfernten Rechner auf den lokalen Rechner mit rsync:
Syntax: rsync -r REMOTEPATH LOCALPATH
Die Option "-r" steht für rekursives Kopieren von ganzen Verzeichnissen. Dabei ist es wichtig, ob am
Ende eines Pfads ein "/" steht (nur Inhalt kopieren) oder nicht (Verzeichnis mitsamt Inhalt kopieren)!
Beispiel: Entferntes SPL-Verzeichnis mit Inhalt in das lokale aktuelle Verzeichnis unter dem Namen spl-toolchain kopieren:
$ rsync -r user1234@saturn.mni.thm.de:/home/hg52/spl spl-toolchain