Du befindest dich hier: FSI Informatik » Prüfungsfragen und Altklausuren » Hauptstudiumsprüfungen » Lehrstuhl 2 » Übersetzerbau 2 [20. September 2022]   (Übersicht)

Übersetzerbau 2 [20. September 2022]

Setting

Mayer und Prof. Philippsen saßen etwas entfernt von mir. Ich saß vor der Dokumentenkamera, hatte darauf die Zettel liegen und hab geschrieben bzw. gezeigt.

Prüfung

Ich habe hier nur Antworten notiert die relevant für den Verlauf sind.

M: Gibt Blatt mit Code. Was sind den Grundblöcke und wie findet man sie?

M: Was sind minimale und maximale Grundblöcke? Warum nutzt man nicht minimale?

P: Also worauf schaut man beim Erstellen der Grundblöcke? A: Labels und Jumps…

M: Gibt Blatt mit (anderem) KFG. Was sind Schleifen und wie findet man sie?

A: natürliche Schleifen → Rückkante, unnatürliche → KFG auf Reduzierbarkeit prüfen.

P: Was ist überhaupt Dominanz?

P: Machen sie mal Reduzierbarkeit. (War am Schluss nicht reduzierbar)

P: Warum sind jetzt unnatürliche Schleifen blöd? A: Wir kennen Schleifenkopf nicht.

M: Dominanz welche zwei Algos gab es da? A: Fixpunkt und Lengaur-Tarjan

M: Welcher davon ist besser?

A: Lengaur-Tarjan ist schneller

M: Also was sind die Vor- und Nachteile vom Fixpunkt?

A: Äh, der ist langsamer aber einfacher?

M: Und vom Lengaur-Targan?

A: Äh, der ist schneller aber komplizierter?

M: Machen sie mal den Fixpunkt-Algo? A: Worklist, alles am Anfang auf alle Elemente

P: Ist die Worklist am Anfang leer?

A: Nein, da ist der Entry drin

P: Warum machen sie beim B1 weiter? A: Weil die Nachfolger vom Entry Knoten zur WL hinzugefügt wurden. P: Das hatten Sie nicht gesagt.

M: Gibt Code mit Schleife. Was ist schleifeninvarianter Code? A: 3 Punkte…

M: Wie zieht man das raus? A: Temporärvariable.

M: Was kann man noch raus ziehen? A: Zuweisungen 2 Punkte (dritter fällt mit nicht ein, Philippsen auch nicht)

M: Wie funktioniert das mit der Datenflussanalyse? A: Es gibt die Sache mit Bitvektoren und die SSA-Form

M: Müssen es immer Bitvektoren sein? A: Ähh..

M: Da gab es diese Datenstruktur? A: (Mit etwas Hilfe) komme ich auf Top und Bottom und das das eine Menge partiell geordneter Elemente sind und das es nur terminiert wenn man immer nur in eine Richtung geht, aber sie wollten Verbund hören.

P: Also wie funktioniert dieser Fixpunkt Algo zur Datenflussanalyse?

A: Vorwärts/Rückwärts, UND/ODER-Verknüpfung…

P: Machen sie das mal für lebendige Variablen

A: Rückwärts, ODER-Verknüpfung

P: Geht das wirklich immer so einfach? A: naja, bei globalen Variablen und Funktionsaufrufen muss man dann aufpassen…

P: Was ist mit dem Funktionseinstieg? A: die Parameter werden implizit definiert

P: Was ist mit dem Exit-Knoten? A: naja, je nachdem wie das mit dem Return funktioniert muss man die Return-Variable auch lebendig machen.

P: Ok, ich wollte nur ihren Gedankengang hören.

M: Aliasanalyse, da haben wir zwei Algos kennen gelernt?

M: Welche Eigenschaften hat der Steensgard? flussinsensitiv, kontextinsensitiv, may

P: Wie funktioniert das mit den Funktionen? A: Aufrufe der gleichen Funktion werden nicht separat behandelt.

P: Das habe ich noch nicht verstanden. M: Gibt Code. Vielleicht damit erklären.

A: Ich mache Speichergraph, hat aber keine Funktionsaufrufe.

P: Und wie funktioniert das jetzt mit bei einem Funktionsaufruf?

A: Die Argumente des Aufrufs werden mit den Parametern der Funktion verbunden und dann wird die Funktion bearbeitet.

P: Ja und wenn die Funktion nochmal aufgerufen wird?

A: Dann werden die Argumente mit den Parametern verbunden, aber die Funktion nicht nochmal bearbeitet.

M: Was können sie uns zu Schleifenrumpfteilen erzählen?

M: Gibt Code und Abhängigkeitsgraph exakt wie aus der Übung. Machen Sie mal.

M: Ok, und was ist mit der Selbstschleife? A: Die kann man ignorieren, weil die Abhängigkeit ja innerhalb der gleichen Schleife bleibt.

M: Was sind schleifengetragene Abhängigkeiten?

P: OK, Zeit rum