Vorlesungsankündigung
(Sommersemester 2001)
Compilerbau
Prof. Dr. Helmut Seidl - Übersetzerbau - Informatik
Ein Compiler ist ein wesentlicher Bestandteil der Systemsoftware,
dessen Aufgabe darin besteht, Programme einer höheren
Programmiersprache - etwa C oder Java -
in Folgen von Maschinenbefehlen eines realen Rechners zu übersetzen.
Compiler sind relativ komplexe Programme; bei ihrer Konstruktion
finden die Ideen und Methoden aus vielen Bereichen ihre Verwendung.
Die ersten beiden Phasen etwa, die lexikalische bzw. syntaktische
Analyse des Eingabeprogramms sind eine beliebte Spielwiese für
Verfahren aus dem Bereich der formalen Sprachen, während später
während der Codeerzeugung bei der Registerverteilung etwa
approximative Methoden zur Graphfärbung Verwendung finden.
Die Vorlesung gliedert sich dabei in folgende Abschnitte.
Nach einer kurzen Übersicht über die einzelnen Komponenten
eines Compilers und deren Aufgaben werden wir untersuchen,
wie man C-Programme in Code für eine (leicht idealisierte)
Hardware, die C-Maschine, übersetzen kann.
Danach wenden wir uns den Techniken zu, wie eine solche
Übersetzung realisiert werden kann. Insbesondere behandeln wir
die klassischen Gebiete des Compilerbaus, die Methoden zur
lexikalischen und syntaktischen Analyse von Programmen.
Anschließend betrachten wir weniger standardisierte Teilaufgaben
eines Compilers, wie die Typüberprüfung von Programmen, die
Registerverteilung und die Instruktionsselektion.
Die Vorlesung wendet sich an StudentInnen des Hauptstudiums.
Literatur:
-
Aho, Sethi, Ullman: Copmpilers.
Principles, Techniques, and Tools.
Addison-Wesley 1985
-
Wilhelm, Maurer:
Übersetzerbau. Theorie, Konstruktion, Generierung. Springer-Lehrbuch, 1992
-
Steven S. Michnick:
Advanced Compiler Design and Implementation. Morgan Kaufmann, 1997
Termine:
Vorlesung:
Montag 12-14 Uhr, V 301 und Donnerstag 12-14 Uhr, V 301
Übung: Freitag 10-12 Uhr, E 50
A C H T U N G !
In der 1. Woche findet diese Veranstaltung gemeinsam mit der Vorlesung
"Abstrakte Maschinen" statt.
Dienstag, 17.04.01, 14-16 Uhr, HS 2