我必须找到max元素及其在数组上的位置(位置从1开始)(如果数组不包含任何元素,我必须返回position = 0和max =最小的负数)。我认为我的代码还可以(除了将max设置为可能的最低值,我对此表示怀疑),但是我不知道我需要以什么来开始我的代码,例如将最后存储的内容保存在寄存器中。而且我也不能编译它(可能是由于伪指令)。
我尝试用c编写程序,然后编译为MIPS,但仍然无法正常工作。
MaxAndArg:
li $v0, -2,147,483,648 # $v0(MAX) is the smallest negative number
li $v1, 0 # $v1(POSITION) starts from zero
li $t3, 0 # $t3(i in a normal language) will be used to loop
li $t4, 0 # $t4 will be used to show the position in the array
L2:
beq $t3, $a1, EXIT # if (i = array size) goto EXIT
sll $t4, $t4, 2 # $t4 = $t4 * 4
add $a0, $t4, $a0 # $a0 = $a0 + $t4 (next element in the array)
blt $v0, a0, L1 # if (max < a[j]) goto L1
addi $t3, $t3, 1 # i++
addi $t4, $t4, 1 # array_position++
j L2
L1:
addi $v0, $a0, 0 # $v0 = $a0
addi $v1, $t3, 1 # $v1 = i + 1 (probably works)
addi $t3, $t3, 1 # i++
addi $t4, $t4, 1 # array_position++
j L2
EXIT:
jr $ra #return