[英]infinite loop in simple mips
我正在尝试了解$ ra,所以我想要的输出是“ mainfunction1main”,通过主要调用function1,function1返回main,以及main结束。 但是由于某种原因,我遇到了一个无限循环,该循环显示“ mainfunction1mainfunction1 ......”。我在做什么错?
.data
mainstring: .asciiz "main"
string1: .asciiz "function1"
string2: .asciiz "function2"
string3: .asciiz "function3"
.text
main: la $a0,mainstring
li $v0, 4
syscall
jal function1
la $a0, mainstring
syscall
function1: la $a0, string1
syscall
jr $ra
您需要在main结尾处返回。 此刻,您将再次进入function1,它将跳回main,然后再次陷入,等等。
就像JasonD所说的那样,您需要在main末尾退出程序。 您需要做的就是在main的末尾添加两行,如下所示:
main:
# ... previous stuff
li $v0, 10
syscall
这将加载并运行exit
系统调用(代码为10)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.