假设我想在MIPS中编写以下C程序:
int main () {
return 5;
}
当我在MARS中尝试以下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以便将其正确返回给此应用程序的调用者?
使用syscall 17:
exit2 (terminate with value)
----------------------------
$v0 = 17
$a0 = termination result
注意:“如果MIPS程序在MARS图形界面(GUI)的控制下运行,则$ a0中的退出代码将被忽略。”
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句