Мне нужно найти элемент max и его позицию в массиве (позиция начинается с 1) (если массив не содержит никаких элементов, я должен вернуть position = 0 и 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