2D массив C to MIPS - PullRequest
       6

2D массив C to MIPS

0 голосов
/ 02 марта 2019

Я пытаюсь преобразовать следующую функцию 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...