Du befindest dich hier: FSI Informatik » Prüfungsfragen und Altklausuren » Hauptstudiumsprüfungen » Lehrstuhl 2 » Uebersetzerbau 3

Uebersetzerbau 3

Prüfer: Prof. Dr. Michael Philippsen, Dipl.-Inf. Stefan Kempf
Syntax: Frage? (Meine) Antwort
Anmerkung: Hab viel selbst erzaehlt da Prof. Dr. Philippsen das so gerne sieht(?)

Gedaechtnis-Protokoll

Fragen kamen nur von Stefan. Er hat auch nur Fragen zum Praktikum und den Teilen der Vorlesung gestellt die er selbst gehalten hat.

  • Byte-Code:
int foo(int a){
    add tmp, a, 1
    return tmp;
}

int main(){
    ... // hier standen Anweisungen
    push y
    call z, foo()
    ... // noch mehr sinnlose Anweisungen
}
  • Was macht ein Interpreter damit?
  • Wie sieht der Aufruf von foo() aus? // Interpreter ruft sich selbst rekursive Aufruft oder macht direkte Sprung im Byte-Code.//
  • Was macht der JIT?
    • Ohne Optimierung // Das ganz normale 1:1 Codeerzeugen erklaert. //
    • JIT2 = Registervergabe mittels Linear Scan
      • Algorithmus an einfachem Beispiel (nur gegebenen Lebensspannen) auf Papier vorfuehren. Davor hab ich selbst noch erklaert wie man die Lebenspannen korrekt berechnet, etc.
    • Dann JIT3: foo() in main inlininen
  • Wann sollte man JITen? // Laufzeitmessung: Zaehler vs Stichproben //
  • Zwischen drinnen kam noch eine Frage zu was passiert wenn man aus Interpretiertem Code gejiteten Code aufrufen will oder umgekehrt. // Trampolin Funktion. System vs Interpreter Stack. On-Stack-Replacement // (Die genaue chronologische Einordnung in den obigen Block ist mir leider entfallen.)
  • Exceptions
  • Warum?
  • Wie? //dynamisches Registrieren vs statische Tabellen (kurz umrissen) //
  • Was ist zur Laufzeit besser? // statische Tabellen //
  • Linker und Loader:
  • Dynamic shared Library
    • Wie muss der Code beschaffen sein? // PIC //
    • Was passiert wenn man foo() der Library aufruft? // PLT: Erst steht dort die Adresse des Stubs der dann die richtige Adresse berechnet und in die PLT eintraegt (und dann noch foo() aufruft). //
    • Wie koennte man fuer Daten auch Lazy-relocation implementieren? // ? //

Alles in allem lockerer Pruefung. Gerne wieder.