我正在尝试学习$ ra,所以我想要的输出是“mainfunction1main”,主要调用function1,function1返回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
答案 0 :(得分:2)
你需要在主要结束时返回。此刻你将再次进入function1,它将跳回到main,然后再次进入,等等......
答案 1 :(得分:2)
像JasonD说的那样,你需要在主要结束时退出程序。您需要做的就是在main的末尾添加两行,如下所示:
main:
# ... previous stuff
li $v0, 10
syscall
这将加载并运行exit
系统调用(代码为10。)