Как вернуть значение из основной функции в MIPS?

Скажем, я хочу написать следующую программу на C на MIPS:

int main () {
  return 5;
}

Когда я пытаюсь следующий код MIPS вМАРС:

main:   ADDI $v0, $zero, 5     # $v0 = 5
        JR $ra                 # return from main()

Я получаюневерный счетчик программ ошибка. Это видимо потому что тыне может выпрыгнуть из основной функции в MARS, Поэтому я попытался переписать это так:

main:   ADDI $v0, $zero, 5     # $v0 = 5
        li $v0, 10             # load 10(exit) for syscall
        syscall                # exit

После выполнения этого регистр $ v0 содержит значение 10, а не 5. Это понятно, поскольку мне пришлось перезаписать регистр $ v0, чтобы syscall работал. Мой вопрос, то, где я должен сохранить значение 5, чтобы оно было правильно возвращено вызывающей стороне этого приложения?

Ответы на вопрос(1)

Ваш ответ на вопрос