Как вернуть значение из основной функции в 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, чтобы оно было правильно возвращено вызывающей стороне этого приложения?