繁体   English   中英

简单mips中的无限循环

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM