Instructieset en assembly
a0 bevat het beginadres van een array a van het type int (4 bytes) en a1 bevat de index i. Wat leest de bovenstaande code in a2?
slli t0, a1, 2
add t0, a0, t0
lw a2, 0(t0)
- ADe waarde van a[4*i]
- BHet adres van a[i]
- CDe waarde van a[i]
Antwoord en toelichting tonen
Antwoord: C. De waarde van a[i]
Regel 1 schuift i 2 bits naar links om 4 × i te maken, regel 2 telt dit op bij het beginadres van de array om het adres van a[i] te berekenen, en regel 3 leest 4 bytes vanaf dat adres. Een int-element is 4 bytes, dus het i-de element ligt 4 × i bytes na het begin. „a[i]” in C wordt door de compiler vertaald in zo’n adresberekening en load.