Я пытаюсь преобразовать следующую функцию C в MIPS, но не могу понять, как перевести часть 2D-массива.
int distance(unsigned arr[15][15],
int coord[2], unsigned target) {
for (int i = 0 ; i < 15 ; ++ i) {
for (int j = 0 ; j < 15 ; ++ j) {
if (arr[i][j] == target) {
return ((i - coord[0]) * (i - coord[0]) +
(j - coord[1]) * (j - coord[1]));
}
}
}
return -1;
}
Пока все, что у меня есть, это двойной цикл for в MIPS, но было бы замечательно, если бы кто-нибудь помог мне с тем, как я мог бы делать операторы if и return.
distance:
li $t0, 0 # i
li $t1, 0 # j
loop_one:
bge $t0, 15, loop_one_done
loop_two:
bge $t1, 15, loop_two_done
addi $t1, $t1, 1
j loop_two
loop_two_done:
addi $t0, $t0, 1
j loop_one
loop_one_done:
jr $ra