简单mips中的无限循环

时间:2012-12-08 21:57:19

标签: assembly mips

我正在尝试学习$ 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

2 个答案:

答案 0 :(得分:2)

你需要在主要结束时返回。此刻你将再次进入function1,它将跳回到main,然后再次进入,等等......

答案 1 :(得分:2)

像JasonD说的那样,你需要在主要结束时退出程序。您需要做的就是在main的末尾添加两行,如下所示:

main:
    # ... previous stuff

    li $v0, 10                                                                                                                                                               
    syscall

这将加载并运行exit系统调用(代码为10。)