这两种MIPS操作之间有什么区别?

时间:2019-01-31 20:19:46

标签: assembly mips

我有两个低级代码块和我知道第二有一个为真。但是为什么第一个是错误的呢?对我来说,这两个似乎工作方式相同。我不关心与== 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

0 个答案:

没有答案