Vorlesung Programmanalysen und Compilerbau (3V+1Ü)
Dozent
Stefan Staiger (Vorlesung + Übungen)
Termine und Ort
- Wir sind stets im Hörsaal 38.03
- Mo 15:45 - 17:15 Uhr Vorlesung
- Di 15:45 - 17:15 Uhr im Wechsel Vorlesung und Übung
Beschreibung
Selektive Vertiefung der Inhalte der "Grundlagen der Programmiersprachen und Übersetzer"
für die Realisierung von Programmanalysen und insbesondere für den Bau von Compilern:
Methoden und Realisierung der semantischen Analyse, Symboltabellen, semantische Attributierungen,
Umsetzung dynamischer Semantik in Zwischencode, prinzipielle Speichervergabe;
Kontroll- und Datenflussanalyse; lokale und globale Optimierungen, Registervergabe, Codeerzeugung;
Laufzeitsysteme; separate Übersetzung und Bibliotheksmechanismen.
Voraussetzungen
Die Inhalte der Vorlesung "Grundlagen der Programmiersprachen und Übersetzer" sind
notwendige Voraussetzung. Grundkenntnisse in der Graphentheorie sind hilfreich.
Aktuelles
Zur Prüfung: Prof. Plödereder hat entschieden, dass alle behandelten
Themen prüfungsrelevant sind. Das Skript steht jetzt in einer (nicht druckbaren)
aktualisierten Version online (s.u.).
Achtung: Prof. Plödereder hat entschieden, dass es nicht möglich ist,
diese Vorlesung zusammen mit der Vorlesung Software Reengineering als Vertiefungslinie
zu prüfen. Grund hierfür sind die inhaltlichen Überschneidungen und die Tatsache, dass
die Software Reengineering Vorlesung nicht für die Vertiefungslinie konzipiert wurde.
Es ist jedoch problemlos möglich, unsere Vorlesung (Programmanalysen) mit den anderen
Vorlesungen des Lehrstuhls zu kombinieren: Grundlagen-Vorlesung,
Konzepte von Programmiersprachen, Realtime Programming (die letzten beiden wird es im
nächsten Semester geben).
Übungsblätter
Blatt 1 (PDF) (Besprechung am 31.10.)
Blatt 2 (PDF) (Besprechung am 07.11.)
Blatt 3 (PDF) (Besprechung am 21.11.)
Blatt 4 (PDF) (Besprechung am 05.12.)
Blatt 5 (PDF) (Besprechung am 19.12.)
Blatt 6 (PDF) (Besprechung am 23.01.)
Blatt 7 (PDF) (Besprechung am 06.02.)
Literatur
Skript (vom SS 04) aus der Fachschaft / vom Kopierlädle;
nicht druckbare erweiterte PDF-Version
(enthält die Zusatzkapitel)
Zusatzkapitel Interprozedurale Kontrollflussanalyse
Zusatzkapitel Dominatoren und Dominanzgrenze
Zusatzkapitel Strukturanalyse
Zusatzkapitel Zeiger- und Aliasanalysen
Zusatzkapitel Seiteneffekt-Analyse
Zusatzkapitel Schleifenoptimierungen
Zusatzkapitel Berechnung der SSA-Form
Abschließende Folien Wiederholung (stark zusammengefasst)
Literaturhinweise zu den zusätzlichen Themen:
- Generell: Leider kein Lehrbuch zu allen Themen der Programmanalysen
- Viele fortgeschrittene Themen sind im Buch von Muchnik zu finden:
Advanced Compiler Design and Implementation (1997)
- Ansonsten: Einzelne Forschungsartikel, in der Regel im Web zu finden
(zumindest von den Uni-Rechnerpools aus sind z.B. alle Artikel
der ACM Digital Library und von IEEE XPlore zugänglich)
- Zeigeranalysen: Überblick z.B. in einem Artikel von Hind:
Pointer Analysis: Haven't We Solved This Problem Yet? (2001)
- Dominatoren und Dominanzgrenzen: Artikel von Cooper, Harvey und Kennedy:
A Simple, Fast Dominance Algorithm (2001)
- Bei Interesse: An Dozenten und andere Mitarbeiter des Lehrstuhls wenden
|