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 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.
Cherche chaque exercice au brouillon, puis coche “valider” si tu as trouvé la bonne démarche. Utilise le bouton aide si tu as besoin d'un coup de pouce.
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).