ISA et assembleur
a0 contient l'adresse de début d'un tableau a de type int (4 octets), et a1 l'indice i. Que charge le code ci-dessus dans a2 ?
slli t0, a1, 2
add t0, a0, t0
lw a2, 0(t0)
- ALa valeur de a[4*i]
- BL'adresse de a[i]
- CLa valeur de a[i]
Afficher la réponse et l'explication
Réponse : C. La valeur de a[i]
La 1re ligne décale i de 2 bits vers la gauche pour obtenir 4×i, la 2e l'ajoute à l'adresse de début du tableau pour obtenir l'adresse de a[i], et la 3e lit 4 octets à cette adresse. Un élément int faisant 4 octets, le i-ième élément se trouve 4×i octets après le début. Le compilateur traduit « a[i] » en C par un tel calcul d'adresse suivi d'un chargement.