Gitlab.cip wird zum Ende 2019 abgeschaltet. Gitlab2.cip steht zur Verfügung. Kennungen können über cipconf angelegt werden. Eine Anleitung zum Umzug findet man auf www.rz.ifi.lmu.de

Name Last Update
lecture Loading commit data...
src Loading commit data...
tools Loading commit data...
README.md Loading commit data...
minijava.txt Loading commit data...

Compilerbau WS18/19

Dieses Projekt enthält alle Materialen zum Compilerbaupraktikum im Wintersemester 2018/19.

Vorlesungsfolien

Die Vorlesungsfolien werden wöchentlich aktualisiert.

Minijava

Übung 1 (15.10.)

Programmrahmen für den Straightline-Interpreter

Übung 2 (22.10.)

Lexer und Parser für Straightline-Programme

Übung 3 (29.10.)

Beispiel zur Lösung von Konflikten:

Datentypen für die abstrakte Syntax von Minijava:

Übung 4 (05.11.)

Fertigstellung des Parsers, Beginn Symboltabelle und Typchecker

Übung 5 (12.11.)

Fertigstellung Symboltabelle und Typchecker

Übung 6 (19.11.)

Übersetzung in Zwischensprache

Datentypen für die abstrakte Syntax der Zwischensprache:

Zum Testen können Programme des Tree-Zwischencodes in C-Programme übersetzt werden.

  • Java: Die Methode CmmPrinter.prgToCmm kann ein Tree-Programm direkt in ein C-Programm umwandeln.
  • Haskell/Rust: Das externe Tool tree2c übersetzt Tree-Programme nach C.

Der so generierte C-Code kann z.B. so übersetzt werden

  gcc -m32 generierter_code.c runtime.c

Es wird die Datei runtime.c verwendet.

Übung 7 (26.11.)

Fertigstellung der Übersetzung in die Zwischensprache

Übung 8 (03.12.)

Tracing

Übung 9 (10.12.)

Instruktionsauswahl

Interfaces des Backends:

Gerüst eines x86-Backends:

Übung 10 (17.12.)

Instruktionsauswahl

Übung 11 (07.01.)

Interferenzanalyse

Übung 12 (14.01.)

Registerallokation

Übung 13 (21.01.)

Registerallokation

Übung 14 (28.01.)

Fertigstellung des Compilers / optionale Aufgaben

Übung 15 (04.02.)

Fertigstellung des Compilers / optionale Aufgaben