Как мне добраться до конца массива с помощью регистра? - PullRequest
0 голосов
/ 07 мая 2020

Я пытаюсь инвертировать элементы массива в сборке MIPS. Например, если массив равен 1 2 3, после этой функции должно быть 3 2 1. Я думаю, что мое решение работает, но моя проблема в том, как добраться до последнего элемента массива, потому что размер массива сохраняется в регистре $ t1, но я не думаю, что смогу это сделать lb $t0, $t1($a0). Есть ли другой способ go об этом?

INVERT:
#$a0 is the array
#$a1 is its size
move $t1, $a1
sra $a1, $a1, 1 #half the size of the array

beq $a1, $zero, end
add $a1, $a1, -1

next:
lb $t0, 0($a0) #t0 = array[i]
add $a0, $a0, 4
move $t2, $t0 #aux = array[i]
lb $t0, $t1($a0) # t0 = array[end]
sb $t0, 0($a0) #array[i] = array[end]
sb $t2, $t1($a0) #array[end] = aux <- previous array[i]

j next
nop

end:

edit: nevermind, это слишком запутанно, я должен просто начать по-другому

...