Comment compiler l'accès à un champ d'un objet (x.champ) en XVM ?
Compiler l'expression x.champ pour lire la valeur d'un champ d'un objet dans le tas.
Compiler p.x où p est un objet Point { int x; int y; } (num(x)=1).
Compiler l'expression x.champ pour lire la valeur d'un champ d'un objet dans le tas.
Compiler x (adresse de l'objet), empiler le numéro du champ (PUSH(num)), puis exécuter CREAD : mem(addr_x + num) est placé en haut de pile.
Compiler p.x où p est un objet Point { int x; int y; } (num(x)=1).
Compiler p, empiler 1 (num(x)), puis CREAD :
[[p]] -- pile : [addr_p]
PUSH(1) -- pile : [1, addr_p] (num(x) = 1)
CREAD -- pile : [mem(addr_p+1)] = p.x
La valeur de p.x est en haut de pile.
Compiler p.y où p est un objet Point { int x; int y; } (num(y)=2).
Compiler obj.champInt où obj est de type Exemple { float champFloat; int champInt; String champString; } (num(champInt)=2).
Compiler pers.taille où pers est de type Personne { int age; int taille; } (num(taille)=2).
Crée ton compte pour accéder à la fiche et aux exercices