Prüfer: Marius Kamp
Bemerkungen: Sehr faire Prüfung, wirklich angenehme Atmosphäre, der Einstieg über die Übung hilft beim reinkommen. Stellenweise war ich glaube ich etwas zu schnell (zu viel Inhalt in zu kurzer Zeit), wir waren wohl wirklich flott durch die angedachten Themen durch.
Ergebnis: Sehr gut
Tvm, virtuelle maschine,…
Was tut der, wofür… Welche Strukturen haben wir da so?
Was macht jit1: instruktionsweise Assembler emittieren
Jetzt wollen wir das aber inkrementell (und just in time) machen? Worauf müssen wir achten? ??? (Wollten auf Trampolin raus, hab dann nach dem Hinweis erklärt, was das Trampolin so tut)
Wie kann man das Trampolin optimieren:
bc_proc
und bc_func
in globale Variablen legen, damit sie nicht als Parameter den direkten Funktionsaufruf stören und dann ein globales Feld für die anzuspringenden „Native-code Adressen“ haben. Dort dann zunächst Trampolin hinterlegen, nach jitten dann die native Adresse…Was müssen wir beachten, wenn wir Ausnahmen in der Sprache haben? Ausnahmetreue, etc.
Gegeben ist folgendes Programm:
p(a, c). p(b, c).
und die folgende Anfrage:
p(b, X)
Wie würde der M.A.U.S interpreter das Programm ausführen?
initial:
p(b, X), << ("X", X)
<HTML><ol style=„list-style-type: decimal;“></HTML> <HTML><li></HTML><HTML><p></HTML>Attach<HTML></p></HTML>
[p(a,c) ?= p(b, X)], << ("X", X) [p(b,c) ?= p(b, X)], << ("X", X)
<HTML></li></HTML> <HTML><li></HTML><HTML><p></HTML>Unify schlägt fehl, zeile abräumen<HTML></p></HTML>
[p(b,c) ?= p(b, X)], << ("X", X)
<HTML></li></HTML> <HTML><li></HTML><HTML><p></HTML>Unify erfolgreich<HTML></p></HTML>
[p(b,c) == p(b, X)], << ("X", c)
<HTML></li></HTML> <HTML><li></HTML><HTML><p></HTML>Match<HTML></p></HTML>
<< ("X", c)
<HTML></li></HTML> <HTML><li></HTML><HTML><p></HTML>Succeed<HTML></p></HTML>
Ausgabe: X = c
<HTML></li></HTML><HTML></ol></HTML>
Wie funktionieren dynamische Bibliotheken? (PIC, GOT, PLT, was macht der Linker wann…)