Du befindest dich hier: FSI Informatik » Prüfungsfragen und Altklausuren » Hauptstudiumsprüfungen » Lehrstuhl 2 » Ausgewählte Kapitel aus dem Übersetzerbau
Inhaltsverzeichnis
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?