Du befindest dich hier: FSI Informatik » Prüfungsfragen und Altklausuren » Hauptstudiumsprüfungen » Lehrstuhl 2 » ueb1-vm-2011_3

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 (Nein, nicht meine Lieblingssprache! Aber ich dachte halt an das einfachere Subset…) und wollte als Subset C nehmen. Ihm war C aber immernoch zu groß und wollte genau wissen, was man alles weglassen sollte und ob man den Compiler dann wirklich noch 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)