Optimierende Compiler
- Bereich
- Computer Microsystems
- Fachrichtung
- Technische Informatik, Elektrotechnik/Datentechnik
- Art
- IV4 oder V3 (siehe unten)
- Dozent
- Andreas Koch
- Voraussetzungen
- Grundkenntnisse Algorithmen und Datenstrukturen, Java, Rechnerarchitektur (erworben z.B. durch Technische Grundlagen der Informatik II)
- Inhalt
- Die komplizierten Architekturen moderner Prozessoren können in der Praxis nur noch durch den Einsatz hochgradig optimierender Compiler ausgenutzt werden. Innerhalb dieser Compiler hat sich daher stetig die Komplexität von der Erkennung der Quelltexte hin zu deren möglichst effizienter Umsetzung in Maschinen-Code verschoben. In der Lehrveranstaltung geht es um eine praktische Einführung in die dafür benötigten Algorithmen und Datenstrukturen. Nach einem Überblick über fundamentale Techniken wie Lexing und Parsing werden abstrakte Syntaxbäume und andere Zwischendarstellungen vorgestellt. Im Anschluss geht es dann um Analyse und Transformation dieser Darstellungen mit dem Ziel, optimierten Maschinen-Code zur Ausführung auf modernen Prozessoren zu erhalten. In einem begleitenden Programmierprojekt wird ein bestehender Compiler in Java schrittweise erweitert.
- Literatur
- • Programming Language Processors in Java von David Watt und Deryck Brown
• Engineering a Compiler von Keith D. Cooper, Linda Torczon
• Advanced Compiler Design and Implementation von Steven S. Muchnick
• Ausgewählte wissenschaftliche Veröffentlichungen
- Credits
- 6.0 CP bei Teilnahme auch am praktischen Teil (Aufgaben, Kolloquien, Vorträge), 4.5 CP bei Beschränkung auf die Vorlesung
- Zeit
- • Dienstags, 16:15-17:55 Uhr
• Donnerstags, 11:40-13:20 Uhr - Ort
- • Dienstags S2|02/C110
• Donnerstags S2|02/C120 - Beginn
- 01.04.2008
- Anmeldung
- Für diese Veranstaltung ist eine Anmeldung bis zum 15.04.2008, 18:00 Uhr, über das WebReg System unbedingt erforderlich.
- Prüfung
- Die Prüfung erfolgt vorlesungsbegleitend in Form von zwei Teilprüfungen (V3) bzw. einer Teilprüfung und dem benoteten Programmierprojekt (IV4). Die erste Teilprüfung wird am 19.5. von 14:00-17:00 Uhr und 20.5. von 13:00-16:00 Uhr abgenommen. Sie können sich in der Vorlesung oder bei der Sekretärin des FG ESA in einen der 20-minütigen Zeit-Slots eintragen. Für die Hörer der V3-Variante wird die zweite Teilprüfung am 2.7. zwischen 15:00-18:00 Uhr abgenommen. Hier gilt das gleiche Verfahren. Bitte stellen Sie in jedem Fall sicher, dass Sie sich unabhängig davon, Ihrer Studienordnung entsprechend, rechtzeitig bei der für Sie zuständigen Stelle (ZPS, Fachbereich, etc.) zur Prüfung angemeldet haben!
Vorlesungsfolien
1. Block: Einleitung, Beschreibung von ProgrammiersprachenFarbig, 1-auf-1 Mit Animationen, Farbig, 1-auf-1
2. Block: Kompilierungsablauf und Syntaktische Analyse
Farbig, 1-auf-1 Mit Animationen, Farbig, 1-auf-1
3. Block: Kontextanalyse
Farbig, 1-auf-1 Mit Animationen, Farbig, 1-auf-1
4. Block: Kontrollflussgraphen und SSA-Form
Farbig, 1-auf-1 Mit Animationen, Farbig, 1-auf-1
5. Block: Optimierung und Redundanzeliminierung
Farbig, 1-auf-1 Mit Animationen, Farbig, 1-auf-1
6. Block: Datenflußanalyse
Farbig, 1-auf-1 Mit Animationen, Farbig, 1-auf-1
7. Block: Laufzeitumgebung
Farbig, 1-auf-1 Mit Animationen, Farbig, 1-auf-1
8. Block: Code-Generierung
Farbig, 1-auf-1 Mit Animationen, Farbig, 1-auf-1
9. Block: Rückwandlung aus der SSA-Form (Tippfehler korrigiert)
Farbig, 1-auf-1 Mit Animationen, Farbig, 1-auf-1
10. Block: Skalare Optimierung
Farbig, 1-auf-1 Mit Animationen, Farbig, 1-auf-1
Aufgaben für praktische Programmierarbeiten
1. Aufgabe: Interaktive AST-Analyse und Sprachbeschränkung2. Aufgabe: Erzeugen von SSA-CFGs aus DAST
3. Aufgabe: DVNT-Optimierung auf SSA-CFG
4. Aufgabe: Optimierung auf SSA-CFG und Rückwandlung in AST
An die vier Pflichtaufgaben schliesst sich eine optionale Verbesserungsphase an, in der die Kommentare aus dem vierten Kolloquium noch berücksichtigt werden können. Hier könnten Sie auch weitergehende Optimierungen (z.B. DEAD und CLEAN) für eine potenzielle Notenverbesserung realisieren. Aber Obacht: Es ist besser, einen vollständig funktionierenden Compiler zu entwickeln, der nicht alle Optimierungen beherrscht, als einen, der zwar jede Menge Optimierungen kann, aber die Programme verhackstückt! Bewertet wird die letzte uns am 14.07.2008, 23:59 MET DST vorliegende Fassung des Compilers.
Materialsammlung für praktische Arbeiten
Quellen des Triangle-Compilers und BeispielprogrammeUnterstützt den vollen Triangle-Sprachumfang, erweitert um Dateioperationen und höhere Speichergrenzen.
Ausgewählte wissenschaftliche Veröffentlichungen als Hintergrundmaterial
Single-Pass Generation of Static Single Assignment Form for Structured LanguagesMARC M. BRANDIS and HANSPETER MÖSSENBÖCK
ACM Transactions on Programming Languages andS ystems 16(6): 1684-1698, Nov.1994 ACM Digital Library Practical Improvements to the Construction and Destruction of Static Single Assignment Form
BRIGGS, COOPER, HARVEY, SIMPSON
SOFTWARE PRACTICE AND EXPERIENCE, VOL. 28(8), 1-28 (July 1998) Wiley Online Library Efficiently computing static single assignment form and the control dependence graph
CYTRON, FERRANTE, ROSEN, WEGMAN, ZADECK
ACM Transactions on Programming Languages and Systems (TOPLAS), Volume 13 , Issue 4 (October 1991) ACM Digital Library Value Numbering
BRIGGS, COOPER, SIMPSON
SOFTWARE—PRACTICE AND EXPERIENCE, VOL. 27(6), 701-724 (JUNE 1997) Wiley Online Library E-path PRE -- Partial Redundancy Elimination Made Easy
DHANAJAY DHAMDHERE
ACM SIGPLAN Notices, 2002, vol. 37, no 8, pp. 53-65, hier korrigierte Fassung Dhananjay Dhamdhere's publications page - use second item Constant propagation with conditional branches
WEGMAN, ZADECK
ACM TOPLAS, 13(2), April 1991, pp. 181-210 ACM Digital Library Combining Analyses, Combining Optimizations
CLICK, COOPER
ACM TOPLAS, 17(2), März 1995, pp. 181-196 ACM Digital Library