Optimierende Compiler
- Bereich
- Computer Microsystems
- Fachrichtung
- Technische Informatik, Elektrotechnik/Datentechnik
- Art
- Vorlesung V3
- Dozent
- Andreas Koch
- Voraussetzungen
- Grundkenntnisse Algorithmen und Datenstrukturen, Java, Rechnerarchitektur (erworben z.B. durch Technische Grundlagen der Informatik)
- 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
• Compilers: Principles, Techniques, and Tools (2. Auflage!) von Aho, Lam, Sethi und Ullman
• Ausgewählte wissenschaftliche Veröffentlichungen
- Credits
- 5,0 CP (PO WS 09/10), 4,5 CP (andere POs)
- Zeit
- • Dienstags, 16:15-17:55 Uhr
• Donnerstags, 11:40-13:20 Uhr - Ort
- S2|02 / C110
- Beginn
- 13.04.2010
- Praktikum
- Parallel zur und eng verzahnt mit der Vorlesung wird ein Praktikum angeboten, dessen Besuch dringend empfohlen wird.
- Prüfung
- Die Prüfung erfolgt semesterbegleitend in Form von ein Abschlussprüfung. Ob die Prüfung mündlich oder schriftlich durchgeführt werden, hängt von der Anzahl der Interessenten ab. Der genau Prüfungsmodus wird in jedem Fall rechtzeitig innerhalb der Anmeldungsfrist bekanntgegeben. Bitte stellen Sie in jedem Fall sicher, dass Sie sich, Ihrer Studienordnung entsprechend, rechtzeitig bei der für Sie zuständigen Stelle 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: Datenflußanalyse
Farbig, 1-auf-1 Mit Animationen, Farbig, 1-auf-1 6. Block: Rückwandlung aus der SSA-Form
Farbig, 1-auf-1 Mit Animationen, Farbig, 1-auf-1 7. Block: Optimierung und Redundanzeliminierung
Farbig, 1-auf-1 Mit Animationen, Farbig, 1-auf-1 8. Block: Skalare Optimierung 1 (bis Folie 30)
Farbig, 1-auf-1 Mit Animationen, Farbig, 1-auf-1 9. Block: Laufzeitumgebung
Farbig, 1-auf-1 Mit Animationen, Farbig, 1-auf-1 10. Block: Code-Generierung
Farbig, 1-auf-1 Mit Animationen, Farbig, 1-auf-1 11. Block: Partielle Redundanzeliminierung
Farbig, 1-auf-1 Mit Animationen, Farbig, 1-auf-1 10. Block: Skalare Optimierung 2 (ab Folie 30)
Farbig, 1-auf-1 Mit Animationen, Farbig, 1-auf-1
Aufzeichnungen
Die Folien und der Vortrag werden aufgezeichnet. Dabei kann es gelegentlich durch die Tücke der Technik zu Störungen oder Ausfällen kommen. Wir bitten diese zu entschuldigen und hoffen, sie in erneuten Durchgängen zu vermeiden. Die Aufzeichungen selbst sind platzsparend im H.264-Format komprimiert. Falls das von Ihnen verwendete Betriebssystem keinen dafür passenden Codec mitbringt, kann dieser in der Regel problemlos nachinstalliert werden. Für Windows-Varianten könnte dafür bespielsweise das Paket FFDShow Tryout genutzt werden. Unter Linux ist der übliche mplayer direkt in der Lage, die Dateien abzuspielen. 13.04.2010 15.04.2010 20.04.2010 22.04.2010 27.04.2010 29.04.2010 04.05.2010: ist leider durch einen Programmabsturz vernichtet worden 06.05.2010 11.05.2010 18.05.2010 20.05.2010 25.05.2010 27.05.2010 01.06.2010 08.06.2010 10.06.2010 15.06.2010 22.06.2010 29.06.2010 06.07.2010Ausgewä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