Vorlesungsankündigung

Abstrakte Maschinen

Prof. Dr. Helmut Seidl

Sommersemester 2006
  1. Termine
  2. Inhalt
  3. Materialien
  4. Übung

Termine:

Beginn: Mo. 24.04.2006
Vorlesung:   Do. 10:15-11:45 in MI 02.07.014
Mo. 12:15-13:45 und Mi. 10:15-11:45 im HS 2 [Vorlesung Compilerbau]
Übung: Di. 10:00-11:30 in MI 02.07.014
Prüfungvoraussichtlich mündliche Prüfung zum Semesterende

[ Aufgrund inhaltlicher Überschneidungen finden die ersten Veranstaltungen Abstrakte Maschinen gemeinsam mit der Vorlesung Compilerbau (Vorlesung Mo. und Mi.) statt. In dieser Zeit (etwa 2-3 Wochen) entfällt die Donnerstagsvorlesung. ]

Wie im Modulkatalog unter IN2040

Inhalt:

Will man für eine Programmiersprache wie Prolog Code erzeugen, wird man schnell feststellen, dass man bei der Übersetzung gerne Befehle verwenden würde, die so von einer konkreten Maschine nicht bereit gestellt werden. Andererseits ändern sich die Instruktionssätze moderner Rechner so schnell, dass es auch gar nicht sinnvoll erscheint, den Compiler zu sehr auf zufälligerweise bereitgestellte Operationen festzulegen. Eine solche Festlegung könnte nämlich bedeuten, dass man sich nach wenigen Jahren bereits gemüßigt fühlen müsste, den Compiler gänzlich neu zuschreiben.
Bereits bei der Implementierung des ersten Pascal Compilers kam man darum auf die Idee, zuerst Code für eine leicht idealisierte Maschine zu erzeugen, deren Befehle dann jeweils nur noch auf den verschiedenen konkreten Zielrechnern zu implementieren waren. Auch die Übersetzung moderner Programmiersprachen wie Prolog, Haskell oder Java basieren auf diesem Prinzip. Einerseits erleichtert dieses Vorgehen die Portierbarkeit des Compilers. Andererseits vereinfacht dies auch die Übersetzung selbst, da man den Befehlssatz entsprechend der jeweiligen zu übersetzenden Programmiersprache geeignet wählen kann.
In der Vorlesung stellen wir solche abstrakte Maschinen für imperative, funktionale, logische und nebenläufige Programmiersprachen vor. Insbesondere sind wir dabei natürlich an den Übersetzungsschemata interessiert, wie man für die jeweiligen konkreten Programmkonstrukte der Programmiersprache die zugehörigen abstrakten Maschinenbefehlsfolgen konstruiert. Zumindest rudimentäre Kennntnis verschiedener Programmiersprachen könnte sich als nützlich erweisen :-)


Literatur:

Aufzeichnungen:

Die aufgezeichneten Vorlesungen befinden sich im TeleTeachingTool-Archiv.

Tools:

Visualisierungstool für Abstrakten Maschinen VAM

Skript:

SS2005: PDF - Compilerbau-Skript (beinhaltet C-Maschine CMa)

Folien:

Automatisch aus den Aufzeichnungen generierte Folien mit Annotationen gibt es im TeleTeachingTool-Archiv.

Übungen:

Leitung: Peter Ziewer

Übung               Abgabetermin
Blatt 4: PDF, PSDo. 8. Juni 2006
Blatt 5: PDF, PSFr. 16. Juni 2006
Blatt 6: PDF, PSDo. 22. Juni 2006
Blatt 7: PDF, PSDo. 29. Juni 2006
Blatt 8: PDF, PSDo. 6. Juli 2006
Blatt 9: PDF, PSDo. 13. Juli 2006
Blatt 10: PDF, PSDo. 20. Juli 2006