Links und Funktionen
Sprachumschaltung

Navigationspfad
Sie sind hier: Startseite / Lehre / SS 2017 / Compilerbau


Inhaltsbereich

Praktikum Compilerbau

Praktikum, 4-std., Mo. 14-18, Schöpp

Aktuelles

  • Der Prakitkumstermin am 15.5. entfällt.
  • Am 24.4. beginnt das Praktikum erst um 15 Uhr c.t.
  • Die Anmeldung ist bis Ende März bei UniWorX möglich.

Inhalt

Compilerbau beschäftigt sich mit der Übersetzung von Programmen von einer (Hoch-)sprache in eine maschinennahe Sprache. Die dazu verwendeten Methoden, wie Parsing, syntaktische und semantische Analyse, finden in zahlreichen Gebieten der Informatik Anwendung. Das Praktikum bietet interessierten Studenten die Gelegenheit, sich grundlegende Techniken in diesem Gebiet anzueignen, sowie Kenntnisse in verschiedenen Gebieten, von formalen Methoden bis maschinennaher Programmierung, zu vertiefen.

In diesem Praktikum wird ein Compiler für MiniJava, eine vereinfachte Version von Java, entwickelt. Damit werden die wichtigsten Techniken zur Konstruktion eines Übersetzers vermittelt. Dies beinhaltet das Lesen und Analysieren des Eingabeprogramms, Optimierungen des Programms zur Effizienzsteigerung, sowie die Codegenerierung für moderne Prozessoren.

Für die Programmieraufgaben stehen mehrere Tools, wie ein Parsergenerator, zur Verfügung.  Die Implementierungssprache ist wahlweise Java, OCaml oder Haskell (für weitere Vorschläge sind wir durchaus offen).

Themen

Das Praktikum folgt dem unten angegebenen Buch Modern Compiler Implementation in Java, welches wie folgt strukturiert ist:

  • Grundlagen
    • Einführung
    • Lexikalische Analyse
    • Parsing
    • Abstrakte Syntax
    • Semantische Analyse
    • Activation records
    • Zwischensprachen
    • Basisblöcke
    • Instruktionsauswahl
    • Lebendigkeitsanalyse
    • Registerallokierung
  • Fortgeschrittene Themen (werden nur teilweise im Praktikum behandelt)
    • Speicherverwaltung
    • Objekt-orientierte Sprachen
    • Funktionale Sprachen
    • Polymorphe Typen
    • Datenflussanalyse
    • Schleifenoptimierungen
    • SSA (Static single-assignment form)
    • Pipelining and scheduling
    • Speicherhierarchie 

Organisation

Dozenten

Zeit und Ort

VeranstaltungZeitOrtBeginn
Vorlesung Mo, 14–16 Uhr CIP-Pool (Gobi), Oettingenstr. 67 24.4.2017
Übung Mo, 16–18 Uhr CIP-Pool (Gobi), Oettingenstr. 67 24.4.2017

Hörerkreis

Zielgruppe sind Studierende folgender Studiengänge:

  • Master (Medien-)Informatik (Praktikum zu fortgeschrittenen Themen der Informatik)
  • Diplom (Medien-)Informatik (Prüfungsbereich T)
Das Praktikum kann auch im Bachelor eingebracht werden (Vertiefende Themen der Informatik).
Voraussetzungen: gute Programmierkenntnisse, Rechnerarchitektur, Formale Sprachen 

Materialien

Alle Materialien finden Sie in folgendem git-Repository.

Übung 1: Interpreter für Beispielsprache "Straightline"

Übung 2: Lexer und Parser für MiniJava

Übung 3: Parser für MiniJava

Übung 4: Symboltabelle und Type-Checking

Übung 5: Übersetzung in die Zwischensprache

Übung 6: Kanonisierung und Basisblöcke

Tools


Literatur

 

Artikelaktionen


Funktionsleiste