Du befindest dich hier: FSI Informatik » Prüfungsfragen und Altklausuren » Hauptstudiumsprüfungen » Lehrstuhl 2 » Ausgewählte Kapitel aus dem Übersetzerbau   (Übersicht)

no way to compare when less than two revisions

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.


pruefungen:hauptstudium:ls2:ueb3-2018-03-12 [16.03.2018 14:24] (aktuell) – angelegt tomabrafix
Zeile 1: Zeile 1:
 +====== Ausgewählte Kapitel aus dem Übersetzerbau ======
  
 +Beisitzer: Kamp, Kreutzer
 +
 +Zeit: 30min
 +
 +
 +===== Stimmung & Ablauf =====
 +
 +Angenehme Atmosphäre, Einstieg über das Blockpraktikum hilft gut, zweiter Teil wie gewohnt über den restlichen Stoff.
 +
 +
 +===== Teil 1: Blockpraktikum =====
 +
 +B: Was haben wir im Praktikum gemacht?
 +
 +B: Welche Teile haben wir dabei im Vergleich zu einem "echten" JIT weg gelassen?
 +
 +  * Code-Cache-Manager
 +  * Laufzeitmessungen
 +
 +==== JIT 0 ====
 +
 +B: Wie funktioniert ein Interpreter?
 +
 +  * switch-case
 +
 +B: Wie führt man dann einzelne Instruktionen aus?
 +
 +B: Was ist schlecht daran?
 +
 +  * Viele Sprünge
 +
 +B: Wie gehts besser?
 +
 +  * Indirektes Durchfädeln
 +
 +B: Was macht man bei indirektem Durchfädeln?
 +
 +B: Dann gibt es doch auch direktes Durchfädeln?
 +
 +
 +==== JIT 1 ====
 +
 +B: Was haben wir hier gemacht?
 +
 +  * Code vorübersetzt
 +
 +B: Auf was muss man aufpassen?
 +
 +  * Interpreter -> Nativer Code
 +  * Nativer Code -> Interpreter
 +  * => Trampolinfunktion
 +
 +B: Ist die Trampolinfunktion weglassbar, wenn alles übersetzt ist?
 +
 +  * Bei uns möglich, da Code-Cache nie gelöscht wird
 +  * Bei anderen JITs allerdings nicht (erneute Übersetzung)
 +
 +
 +==== JIT 2 ====
 +
 +B: Was haben wir da gemacht?
 +
 +  * Registervergabe
 +
 +B: Mittels Graphfärben? Wieso nicht?
 +
 +  * Zu aufwändig und lohnt meistens nicht
 +
 +B: Kosarajus Algorithmus.
 +
 +B: Auf was machen wir den?
 +
 +  * KFG
 +
 +B: Linear Scan
 +
 +  * Keine Löcher
 +  * Erstes Lesen bis letztes Lesen
 +
 +
 +===== Teil 2: Restlicher Stoff =====
 +
 +==== Exceptions ====
 +
 +B: Wie würde man mit Exceptions umgehen?
 +
 +B: Wie funktioniert Stack Cutting?
 +
 +B: Vor- und Nachteile von Stack Cutting
 +
 +
 +==== Garbage Collection ====
 +
 +B: Welche einfachen Speicherbereiniger gibt es?
 +
 +  * Verwendungszähler
 +  * mark and sweep
 +  * Kopierend
 +
 +B: Woher weiß man, welche Objekte man entfernen kann?
 +
 +  * Zähler / (keine) Markierung
 +
 +B: Wie sieht es bei Speicherbereiniger mit Verwendungszähler mit zyklischen Müll aus?
 +
 +B: Wann macht man Speicherbereinigung?
 +
 +
 +==== LLVM ====
 +
 +B: Was ist das?
 +
 +B: Was sind die Vorteile?