指令集與組合語言
a0存放int型(4位元組)陣列a的起始位址,a1存放索引i。下列何者是上述程式碼讀入a2的內容?
slli t0, a1, 2
add t0, a0, t0
lw a2, 0(t0)
- Aa[4*i]的值
- Ba[i]的位址
- Ca[i]的值
查看答案與解析
正確答案:C. a[i]的值
第1行將i左移2位元以得到4×i,第2行加到陣列的起始位址以求得a[i]的位址,第3行從該位址讀取4個位元組。int型每個元素為4位元組,所以第i個元素位於距起始處4×i位元組之處。C語言的「a[i]」會由編譯器翻譯成這樣的位址計算與載入。
- A. 位址在4×i位元組之後,那就是第i個元素。
- B. 最後的lw讀取的是值。
- C. 正確。從起始位址+4×i的位址讀取。