Sie befinden sich hier: Termine » Prüfungsfragen und Altklausuren » Hauptstudiumsprüfungen » Lehrstuhl 2 » Uebersetzerbau 1 (13.4.2012)   (Übersicht)

Inhaltsverzeichnis

Uebersetzerbau 1 (13.4.2012)

Pruefer: Prof. Dr. Michael Philippsen

Beisitzer: Jakob Krainz

Note: 1.3

Syntax:

Pruefung:
	Pruefungsabschnitte

Pruefungsabschnitte:
	Pruefungsinhalt '\n' Pruefungsabschnitte

Pruefungsinhalt:
	Frage
	Frage '[' Anmerkung ']'
	'[' Anmerkung ']'
	Aufforderung

Frage:
	Satz '?'

Anmerkung:
	Satz

Aufforderung:
	Satz '!'

Was ist ein Compiler?

Was sind die einzelnen Stufen in einem Compiler?

[Anhand von vorrgegenen Code]

Was erzeugt der Lexer aus diesem Code?

Wie funktioniert die Typenpruefung? [Auf Prototypen eingehen]

Parsen sie diesen Ausdruck: „int a = x.foo();“

[Hier muss man auf die Methodenauswahl achten; Stichwort: select-Knoten, linke Seite muss anders als bei anderen Expessions zu erst ausgewertet werden]

Parsen sie diesen Ausdruck „(3 * j) + (4 * k) + (l + m)“!

Was macht der Compiler nun aus diesem Statment?

[Ueberleitung zu Codeerzeugung, bei mir in Richtung Dynamische Prog.-Variante]

Dann fuehren sie das mal vor mit 2 Registern!

[Erstmal Instructionset festlegen]

[Phase 1: Blattknoten bearbeiten]

[Phase 2: innere Konten bottom-up bearbeiten]

Waehlt man nun immer das Minimum jedes einzelnen Knotens? [Fangfrage: man waehlt top-down das Minimum, die Auswahl innerhalb der Folgeknoten ist dadurch vorgegeben]

Ist das verfahren ideal? [Fangfrage: Das Verfahren findet nur das lokale Optimum; Stichwort Graphenfaerbung, Caching]

[Phase 3: Topologische Sortierung]

Was kann man jetzt noch tun? [Ueberleitung zur Sortierung im DAG der Instruktionen] Warum spielt die Reihenfolge der Befehle eine Rolle, wo wir doch jeder Instruktion feste Kosten zugeteilt haben?

Malen sie mal einen beliebigen DAG auf und machen sie Gewichte an die Kanten und fuehren sie das Verfahren zur Optimierung aus!