Функция для поиска МАКСА и его положения в массиве - PullRequest
0 голосов
/ 10 апреля 2019

Мне нужно найти элемент 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
...