MIPS findmin的数组函数

时间:2014-05-05 22:55:55

标签: arrays function assembly mips minimum

您好我在数组函数中获取以下findMin编号的异常7 [错误数据地址]。数组的长度已经是$ a1,数组开头的地址是$ a0。我希望在完成所有操作之后将$ min设置为$ v0。 我的函数适用于具有2个元素的数组,但在使用更大尺寸的数组时会发出异常7错误。我通过添加到地址而不是像4合4($ a0)偏移量那样来抵消数组。

1 个答案:

答案 0 :(得分:2)

这里的关键是add $a0, $a0, $t1。考虑在具有N元素的数组中将执行的操作:在第二次迭代中,您将在第三次迭代1*4上添加2*4,依此类推。因此,在第三次迭代中,您将尝试从array + 1*4 + 2*4 == array + 3*4而不是array + 2*4进行阅读。在N:th次迭代中,您将尝试从array + 1*4 + 2*4 + ... + (N-1)*4读取。

应移除sll + add之前的lw。更新地址可以在<{em> lwaddiu $a0, $a0, 4完成。