首页 > 解决方案 > 这两种 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

标签: assemblymips

解决方案


推荐阅读