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