在简单的MIPS无限循环(infinite loop in simple mips)

2019-08-03 18:10发布

我想了解RA $,所以我想输出是“mainfunction1main”,由主呼功能1,功能1返回主程序和主整理。 但由于某种原因,我得到一个无限循环用于打印“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

Answer 1:

就像JasonD说,你需要在主月底退出程序。 所有你需要做的是在主要的末尾添加两行,像这样:

main:
    # ... previous stuff

    li $v0, 10                                                                                                                                                               
    syscall

这将加载和运行exit系统调用(其具有为10的代码)



Answer 2:

你需要在主月底返回。 目前你只告吹再次功能1,这将跳回主,然后告吹再次,等等...



文章来源: infinite loop in simple mips
标签: assembly mips