【发布时间】:2012-03-19 15:25:38
【问题描述】:
所以我遇到了问题。我给出 a 是一个单词数组,a 的基地址保存在 $a0 中。所以对于 int a[10] 使用 mips 找到这个数组的总和。我真的不知道从哪里开始有人可以帮助我开始,我想我应该能够完成它。非常感谢!
【问题讨论】:
标签: mips
所以我遇到了问题。我给出 a 是一个单词数组,a 的基地址保存在 $a0 中。所以对于 int a[10] 使用 mips 找到这个数组的总和。我真的不知道从哪里开始有人可以帮助我开始,我想我应该能够完成它。非常感谢!
【问题讨论】:
标签: mips
既然你得到了数组的起始地址,你就知道这也是你的第一个元素。由于这是一个 int 数组,我假设这意味着它将使用 mips32 上一个单词大小的存储空间,即 4 个字节。因此a[1]位于a[0]+4bytes的地址。 A[2] 位于地址 a[0]+8bytes 或 a[1]+4bytes 等...
因此,您只需循环 10 次,每次加载一个单词并添加值。
基本流程是:
注意:给你的基地址必须是字对齐的。
优化说明:您可以通过在第 1 步之前将一些寄存器设置为 $a0 + 40 来优化执行的指令数。这意味着您可以摆脱第 5 步,第 6 步将检查 $a0 是否小于该值注册您在步骤 1 之前设置的。(最后的优化是将步骤 4 移动到步骤 6 的延迟槽。如果您使用的是模拟器,则可能不支持)
【讨论】: