Mips函数返回一个数字

时间:2016-11-11 16:40:26

标签: function return mips

我一直在努力学习如何在Mars上使用Assembly MIPS32进行编程。 我有一个问题,我想做一个返回整数的函数(我不知道它是否被调用)。 基本上我想创建一个方法,要求用户插入一个数字,并将该数字添加到之前请求的另一个数字 这是我提出的,但我不知道如何将值返回到$ s2

New:    
    la $a0, prompt2 # Print string "Input: "
    li $v0,4 
    syscall

    li $v0,5 #Read int x
    syscall 

    jr $ra  

Add:
    j New

    add $s1, $s1, $s2 #add Int $s1 and $s2 and save them to $s1
    j loop

如果有人有任何建议或修正,请回复。 提前致谢

1 个答案:

答案 0 :(得分:0)

MIPS处理器通常使用$v0作为函数返回值。当然,您可以自由地为自己的功能提出任何调用约定,但除非您有充分的理由不坚持使用$v0来表示返回值。

此外,要调用某个功能,您通常会使用jal,因为这是设置$ra注册表的内容,以便您以后可以使用jr $ra返回。
如果您还没有,我建议您下载 MIPS32™架构程序员第二卷:MIPS32™指令集并阅读jaljr的方式工作(或任何其他你认为你不完全理解的指示)。

因此,您在问题中描述的代码可能类似于:

New:    
    la $a0, prompt2 # Print string "Input: "
    li $v0,4 
    syscall

    li $v0,5 #Read int x
    syscall 
    # The result of syscall 5 is in $v0

    jr $ra  

Add:
    jal New
    add $s1, $s1, $v0  # add the value we just read to $s1
    j loop