Modulbeschreibung

Compilerbau

Kurzzeichen:
M_CoBau
Unterrichtssprache:
Deutsch
ECTS-Credits:
4
Leitidee:

Die Studierenden können:

  • die Konzepte und Techniken der Compiler und Laufzeitsysteme für moderne objekte-orientierte Programmiersprachen erklären
  • eigene vollständige Compiler und Laufzeitsysteme für objektorientierte Programmiersprachen auf aktuellen Prozessor-Plattformen entwickeln
  • die Syntax und Semantik von modernen Programmiersprachen erläutern und spezifizieren
Modulverantwortung:
Corbat Thomas
Standort (angeboten):
Rapperswil-Jona, St.Gallen (Informatik Raster)
Modultyp:
Wahlpflicht-Modul für Informatik Retro STD_14_UG(Empfohlenes Semester: 5)Kategorie:Grundlagen Informatik und Aufbau Informatik (I-gai)
Wahlpflicht-Modul für Informatik STD_11(Empfohlenes Semester: 6)Kategorie:Aufbau Informatik (I-a)
Wahlpflicht-Modul für Informatik STD_14(Empfohlenes Semester: 5)Kategorien:Aufbau (I_Auf), Informatik (I_Inf)
Wahlpflicht-Modul für Informatik STD_21(Empfohlenes Semester: 5)Kategorien:Aufbau (I_Auf), Informatik (I_Inf)
Wahlpflicht-Modul für Informatik STD_23(Empfohlenes Semester: 5)Kategorien:Aufbau (I_Auf), Informatik (I_Inf)
Modulbewertung:
Note von 1 - 6

Leistungsnachweise und deren Gewichtung

Modulschlussprüfung:
Schriftliche Prüfung, 60 Minuten
Während der Unterrichtsphase:

Bewertung eines zu entwickelnden Compilers und Laufzeitsystems gemäss Aufgabenstellung(en).

Bewertungsart:
Note von 1 - 6
Gewichtung:

50% schriftliche Prüfung

50% Semesterarbeit

Bemerkungen:

ACHTUNG: DIESES MODUL ERFORDERT VIEL AUFWAND IM SEMESTER! SEHR GUTE PROGRAMMIERFÄHIGKEITEN UND GENÜGEND ZEIT RESERVEN WERDEN VORAUSSGESETZT.

Inhalte

Angestrebte Lernergebnisse (Abschlusskompetenzen):

Siehe oben

Modul- und Lerninhalt:
  • Programmiersprachspezifikation: Syntax und Semantik

  • Architektur von Compilern und Laufzeitsystemen

  • Lexer/Scanner

  • Parser (LL vs. LR), inkl. Diskussion von Generator-Tools

  • Zwischendarstellung (Symbol Table, Abstract Syntax Tree)

  • Semantic Analysis: Symbolauflösung, Type Checking, Semantic Rules

  • Code Generierung (für Zwischensprache und Intel 64 Prozessor)

  • Zwischensprachen (stack-basiert)

  • Virtuelle Maschine mit Loader und Interpreter

  • Just-In-Time Compiler (JITer) für Intel 64 Prozessoren

  • Elementare Laufzeitunterstützung: Stack und Heap Management

  • OO-Laufzeitunterstützung: Vererbung und Type Tests, Virtual Tables und Dynamic Dispatch

  • Garbage Collecton: Mark And Sweep, Root Set, Diskusson fortgeschrittener GCs (Copy Collector, Incremental GC, Generational/Partitoned GC)

  • Statische Analyse und Optimierung: Datenfluss-Analyse (je nach verfügbaren Vorlesungswochen im Semester)

Im Rahmen der Übungen entwickeln die Teilnehmer einen Compiler und eine Virtual Machine für eine Java-ähnliche Programmiersprache, inkl. Unterstützung der Objekt-Orientierung und Implementation eines GCs und Just-In-Time-Compilers.

Benötigte Technologien: .NET, Intel 64 Assembler