info jvm_type offset accessDazu solltet ihr Euch die Beschreibung der semantischen Analyse ansehen, sowie die Berechnung der Adreßumgebung. Allerdings braucht ihr dank Java nur die Adressen der lokalen Variablen zu berechnen. Dann solltet ihr euch in der Beschreibung der Zwischendarstellung anschauen, für welche Knoten welche Einträge berechnet werden müssen. Der Wert von
jvm_type
ist der Wert,
der durch die Typeinferenz berechnet wird.
Der Wert von offset
ist die Adresse
der lokalen Variable (bzw. in PT_X_METHDEC
die Anzahl der lokalen Variablen). In info
speichern wir einen Namen oder eine Signatur in
der Form, wie sie später für Instruktionen
wie getstatic
oder invokevirtual
benötigt werden. Diese Namen werden während
der Typinferenz aufgebaut. In access
speichern
wir die Zugriffsart (statisch, virtuell, lokal) auf
die Variable oder Methode. Diese können wir
in der Umgebung nachschlagen, sobald wir in der
Typinferenz festgestellt haben, welche Methode
oder Variable tatsächlich gemeint ist.
Die Umgebung muß auch einen Eintrag für
java.lang.System.out
und java/io/PrintStream/println(I)
enthalten.
Wenn ihr für Umgebungen den Datentyp BINDING
verwendet, dann könnt ihr die Funktion
get_binding
verwenden, die zu einer
externen Klasse, deren Bindung liefert (siehe
auf den CIP Rechnern: ~diehl/COMP/project3/external.c
).