我有两个低级代码块和我知道第二有一个为真。但是为什么第一个是错误的呢?对我来说,这两个似乎工作方式相同。我不关心与== 8部分。
if(A[i] == 8) { }
// A stored in $s0
// i stored in $s1
First :
sll $s1, $s1, 2 // i = i * 4
lw $t0, $s0, $s1 // we have A[i] in $t0
Second :
sll $s1, $s1, 2 // i = i * 4
add $s0, $s0, $s1 // we have the address of A[i]
lw $t0, 0($s0) or lw $t0, $s0, 0 // we have A[i] in $t0