Art: Vorlesung V3

Credits: 6 CP

Prüfer / Betreuer

Bereich: Software-Systeme und formale Grundlagen

Fachrichtung: Technische Informatik, Elektrotechnik/Datentechnik

Voraussetzungen: Grundkenntnisse Compilerbau (aus Compiler 1/Einführung Compilerbau), 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. Vorgestellt werden Analysen und Transformationen dieser Darstellungen mit dem Ziel, optimierten Maschinen-Code zur Ausführung auf modernen Prozessoren zu erhalten. Der behandelte Stoff wird in Übungsblättern, deren Bearbeitung freiwillig ist (keine Abgabe), sowohl in theoretischen als auch praktischen Aufgaben vertieft.

Literatur

Bücher

  • Engineering a Compiler von Keith D. Cooper, Linda Torczon (2. Auflage!)
  • 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

Zugriff teilweise nur im Netz der TU oder per VPN

Marc M. Brandis, Hanspeter Mössenböck: Single-Pass Generation of Static Single-Assignment Form for Structured Languages. ACM Trans. Program. Lang. Syst. 16(6): 1684-1698 (1994)

Preston Briggs, Keith D. Cooper, Timothy J. Harvey, L. Taylor Simpson: Practical Improvements to the Construction and Destruction of Static Single Assignment Form. Softw. Pract. Exp. 28(8): 859-881 (1998)

Ron Cytron, Jeanne Ferrante, Barry K. Rosen, Mark N. Wegman, F. Kenneth Zadeck: Efficiently Computing Static Single Assignment Form and the Control Dependence Graph. ACM Trans. Program. Lang. Syst. 13(4): 451-490 (1991)

Preston Briggs, Keith D. Cooper, L. Taylor Simpson: Value Numbering. Softw. Pract. Exp. 27(6): 701-724 (1997)

Vorlesungsmodus

Die Vorlesung findet in Präsenz statt.

  • Dienstags, 16:15 - 17:45 Uhr
  • Donnerstags, 11:40 - 13:10 Uhr
  • Ort: S2/02 C110

Beginn: 12.04.2022

Sprechstunde und sonstige Veranstaltungskommunikation: Bitte schreiben Sie sich in den zugehörigen Moodle-Kurs ein.

Klausur

Die Klausur findet am Dienstag, den 30. August 2022, von 9 - 11 Uhr, in Raum S101/A1 statt.

Klausureinsicht

Die Klausureinsicht findet am Freitag, den 23. September 2022, von 13:30-14:30 Uhr, in Raum S2|02 E202 statt. Bitte bringen Sie Ihren Studienausweis und einen Lichtbildausweis mit.

Älteres Material

Die Vorlesungen werden aufgezeichnet. Die Materialien aus den vergangenen Semestern stehen weiterhin zur Verfügung.

Folien & Vorlesungsaufzeichnungen aus dem Jahr 2019, Dozent: Dr.-Ing. Florian Stock

Folien & Vorlesungsaufzeichungen aus dem Jahr 2018, Dozent: Prof. Dr.-Ing. Andreas Koch

Vorlesungsfolien

1. Block: Übersetzung objektorientierter Sprachen am Beispiel von Bantam
2. Block: Einführung in die Datenflussanalyse
3. Block: SSA-Form
4. Block: Rückwandlung aus SSA-Form
5. Block: Redundanzeleminierung
6. Block: Partielle Redundanzelimination
7. Block: Skalare Optimierung
8. Block: LLVM
9. Block: Register Allokation

Aufzeichnungen

Die Folien und der Vortrag werden bis auf weiteres 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. Zum Abspielen empfehlen wir VLC.

12.04.2022
14.04.2022 (Teil 1)
14.04.2022 (Teil 2)
19.04.2022
21.04.2022
26.04.2022
28.04.2022
03.05.2022
05.05.2022 (Teil 1)
05.05.2022 (Teil 2)
10.05.2022
12.05.2022
19.05.2022 (Teil 1)
19.05.2022 (Teil 2)
24.05.2022
31.05.2022
02.06.2022
07.06.2022 (Schlechte Audioqualität - ggf. altes Video anschauen)
09.06.2022
14.06.2022
21.06.2022
28.06.2022 (LLVM-IR-Demo)
28.06.2022 (Folien Teil 1)
28.06.2022 (Folien Teil 2)
05.07.2022
12.07.2022