1. 因為位址定的是 1 個 byte
而一格是 1 word (4 byte)
所以要指到下一格,位址要 +4
2. 就是 *4,同 1.
g +1 在哪一行?
B[g] 的位址 在 B[0] 的位址往後數 g 個 word
所以要 + 4 * g
add 沒有取址的作用
add $t0, $s6, $t0 # $t0 = &A[f]
$t0 = $s6 + $t0 ,它只是加起來
但 $s6 裡面放的是A[0]的位置呀
sll $t0, $s0, 2 # $t0 = f * 4
add $t0, $s6, $t0 # $t0 = &A[f]
sll $t1, $s1, 2 # $t1 = g * 4
add $t1, $s7, $t1 # $t1 = &B[g]
lw $s0, 0($t0) # $s0 = A[f]
addi $t2, $t0, 4 # $t2 = &A[f] + 4 = &A[f+1]
lw $t0, 0($t2) # $t0 = A[f+1]
add $t0, $t0, $s0 # $t0 = A[f+1] + A[f]
sw $t0, 0($t1) # B[g] = A[f+1] + A[f] |