Comment compiler l'affectation d'un champ d'un objet (x.champ = e) en XVM ?
Compiler l'instruction x.champ = e pour écrire la valeur de e dans le champ d'un objet.
Compiler l'instruction x.champ = e pour écrire la valeur de e dans le champ d'un objet.
Compiler e (valeur), compiler x (adresse de l'objet), empiler le numéro du champ (PUSH(num)), puis exécuter CWRITE : mem(addr_x + num) ← val_e.
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 = 3 où p est un objet Point { int x; int y; } (num(x)=1).
Compiler la valeur 3, l'adresse de p, le numéro 1 du champ x, puis CWRITE :
PUSH(3) -- pile : [3] (valeur e=3)
[[p]] -- pile : [3, addr_p]
PUSH(1) -- pile : [1, addr_p, 3] (num(x) = 1)
CWRITE -- mem(addr_p + 1) <- 3 ; pile diminue de 3
p.x vaut désormais 3.
Compiler obj.champInt = e où obj est de type Exemple { float champFloat; int champInt; String champString; } (num(champInt)=2).
Compiler r.hauteur = 15 où r est un Rectangle { int largeur; int hauteur; int couleur; } (num(hauteur)=2).
Compiler pers.age = age+1 où pers est de type Personne { int age; int taille; } (num(age)=1).