Comment compiler l'affectation d'un élément de tableau (t[e1] = e2) en XVM ?
Compiler l'instruction t[e1] = e2 pour écrire la valeur de e2 dans la case d'indice e1 du tableau t.
Compiler l'instruction t[e1] = e2 pour écrire la valeur de e2 dans la case d'indice e1 du tableau t.
Compiler e2 (valeur), compiler t (adresse), compiler e1 (indice) et ajouter 1 (PUSH(1); ADD), puis exécuter CWRITE : mem(addr_t + e1+1) ← val_e2.
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 t[0] = 99 : écrire 99 dans la première case du tableau t.
Compiler la valeur 99, l'adresse de t, l'indice 0 + 1 = 1, puis CWRITE :
PUSH(99) -- pile : [99] (valeur e2=99)
[[t]] -- pile : [99, addr_t]
PUSH(0) -- pile : [0, addr_t, 99] (indice e1=0)
PUSH(1) -- pile : [1, 0, addr_t, 99]
ADD -- pile : [1, addr_t, 99] (offset réel = 0+1 = 1)
CWRITE -- mem(addr_t + 1) <- 99 ; pile diminue de 3
mem(addr_t + 1) = 99 : la première case du tableau vaut 99.
Compiler t[3] = 42 : écrire 42 dans la case d'indice 3 du tableau t.
Compiler t[i] = e où i est une variable locale (offset 2) et e est une expression.
Compiler scores[0] = 100 pour un tableau scores de résultats.