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, | ||
+ | |||
+ | |||
+ | ===== Teil 1: Blockpraktikum ===== | ||
+ | |||
+ | B: Was haben wir im Praktikum gemacht? | ||
+ | |||
+ | B: Welche Teile haben wir dabei im Vergleich zu einem " | ||
+ | |||
+ | * 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? | ||
+ | |||
+ | * 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? |