如何从MIPS中的主函数返回值?

如何从MIPS中的主函数返回值?,mips,mars-simulator,Mips,Mars Simulator,假设我想在MIPS中编写以下C程序: int main () { return 5; } 在中尝试以下MIPS代码时: 我收到一个“无效程序计数器”错误。这显然是因为你。所以我试着这样重写: main: ADDI $v0, $zero, 5 # $v0 = 5 li $v0, 10 # load 10(exit) for syscall syscall # exit 执行此操作后,$v0寄存

假设我想在MIPS中编写以下C程序:

int main () {
  return 5;
}
在中尝试以下MIPS代码时:

我收到一个“无效程序计数器”错误。这显然是因为你。所以我试着这样重写:

main:   ADDI $v0, $zero, 5     # $v0 = 5
        li $v0, 10             # load 10(exit) for syscall
        syscall                # exit
执行此操作后,$v0寄存器包含值10,而不是5。这是可以理解的,因为我必须覆盖$v0寄存器才能让syscall工作。那么,我的问题是,为了将值5正确返回给此应用程序的调用者,我应该在哪里保存它?

使用:

请注意,“如果MIPS程序在MARS图形界面(GUI)的控制下运行,则$a0中的退出代码将被忽略。”

main:   ADDI $v0, $zero, 5     # $v0 = 5
        li $v0, 10             # load 10(exit) for syscall
        syscall                # exit
exit2 (terminate with value)
----------------------------
$v0 = 17
$a0 = termination result