Du befindest dich hier: FSI Informatik » Prüfungsfragen und Altklausuren » Hauptstudiumsprüfungen » Lehrstuhl 2 » ueb1-vm-2011_3 (Übersicht)
Dies ist eine alte Version des Dokuments!
Pruefer: Michael Philippsen, Volkmar Sieh Themengebiete: Uebersetzerbau 1, Virtuelle Maschinen
Uebersetzerbau 1:
- Bootstrapping:
- „Nehmen Sie mal Ihre Lieblingssprache und schreiben sie einen Compiler dafür“
- Habe C++ genommen und wollte als Subset C nehmen. Ihm war C aber immernoch zu groß. Er wollte aber genau wissen, was man alles weglassen sollte und ob man den Compiler dann wirklich in Maschinensprache schreiben wuerde.
- Semantische Analyse
- gegebener Code: int c = true + 6;
- Deklariertheitseigenschaft, Typpruefung
- AST dafuer malen, da bin ich ueber die Deklaration gestrauchelt
- Visitor-Pattern erklaeren
- Zusatzfrage: muss man das Double-Dispatch in allen Sprachen machen oder liegt das nur an Java?
- in dem Kontext auch Methodenauswahl kurz angeschnitten, z.B. a.foo()
Virtuelle Maschinen:
- Was muss man denn alles so machen, wenn man einen kompletten PC emulieren will? (einzelne Komponenten emulieren, usw.)
- Speicherzugriffe (MMU emulieren, evtl. direkten Zugriff erlauben, nur bestimmte Seiten mappen)
- Wie funktionieren I/O-Zugriffe?
- Wie sind die Komponenten denn verbunden? (Busse)
- Wie macht man das effizient (Tabelle mit Mapping von Adressen zu Devices anlegen)
- Wann fuellt man das aus? (Da wollte er hoeren, dass man das inkrementell zur Laufzeit machen kann, waehrend ich irgendwie an der Konfiguration festgehalten hatte)
- JIT erklaeren
- Wie kann man das machen, wenn man nur ein Software-Programm emulieren moechte? (JIT-freundliche Hardware, was kann man alles weglassen, usw.)
- [Die letzte Frage war dann so ein bisschen ein Mix aus Uebersetzerbau und VM:] Wie ist das denn bei der JVM, kann man den Bytecode so einfach auf x86 ausfuehren? (Kellermaschine vs. Registermaschine, Umwandlung noetig, Stichworte Registerfärben und Lebendigkeit von Variablen)