Du befindest dich hier: FSI Informatik » Prüfungsfragen und Altklausuren » Hauptstudiumsprüfungen » Lehrstuhl 2 » Übersetzerbau 2 2017-08-09

Übersetzerbau 2 2017-08-09

Fach: Optimierungen in Übersetzern

Prüfer: Prof. Philippsen

Beisitzer: Marius Kamp

Fragen

  • Welche wichtige Datenstruktur haben wir denn fuer Optimierungen verwendet? ~> KFG
  • Was ist ein KFG, Basisbloecke, wie erstellt man ihn?
  • Was kann man damit machen ~> Dominanz bestimmen
  • Was ist Dominanz? Wie kann man sie bestimmen? ~> iterativer Fixpunktalgorithmus, Lengauer-Tarjan
  • Wie funktioniert iterativer Fixpunktalgorithmus?
  • Wofuer wird Dominanz benoetigt? ~> Kontrollflussabhaengigkeit
  • Was ist Dominanzgrenze, wie bestimmt man sie?
class C {
//...
}
 
void foo(C p) {
  C c = new C();
  nullptrcheck(c);
  nullptrcheck(p);
  c.x = p.x
  // ...
}
  • Wie kann man unnoetige Nullptrchecks erkennen? ~> Datenflussanalyse
  • Bitvektorbelegung, Gen-, Kill-Mengen, Konfluenzoperator angeben.
  • Was hatten wir noch an Werkzeug fuer Datenflussanalyse? ~> SSA
  • Was ist SSA?
  • Wie in SSA transformieren? ~? Wertnummerierung (Click)/Dominanzgrenzen (Cytron)
  • Click angewandt.
  • Wie aus SSA zurueck? ~> CSSA waere nett, Transformationen machen aber iA

Lebensspannen kaputt, also Temporaervariablen einfuehren, drei Zuweisungen.

  • Was ist schleifeninvarianter Code?
  • Ist bei diesem Codestueck die Zuweisung invariant? ~> abhaenging von p ~> Aliasanalyse
  • Welche benutzen wir? ~> interprozedural, also Steensgard
  • Steensgard angewandt.
  • Was sind Induktionsvariablen? Welche Arten gibt es?
  • Transformationsschablone auf gegebenes Codestueck angewandt.
  • Schleifengrenze angepasst; illegal bei Ueberlauf.