Befehlssatz und Assembler
In a0 steht die Anfangsadresse eines Arrays a vom Typ int (4 Byte), in a1 der Index i. Was lädt der obige Code in a2?
slli t0, a1, 2
add t0, a0, t0
lw a2, 0(t0)
- ADen Wert von a[4*i]
- BDie Adresse von a[i]
- CDen Wert von a[i]
Antwort und Erläuterung anzeigen
Antwort: C. Den Wert von a[i]
Zeile 1 verschiebt i um 2 Bit nach links und bildet 4×i, Zeile 2 addiert dies zur Anfangsadresse des Arrays und ergibt die Adresse von a[i], Zeile 3 liest ab dieser Adresse 4 Byte. Da ein int-Element 4 Byte belegt, liegt das i-te Element 4×i Byte hinter dem Anfang. „a[i]“ in C wird vom Compiler in eine solche Adressberechnung und einen Load übersetzt.