我是 MIPS 语言的新手,我不明白 MIPS 汇编语言中的函数(过程)是如何工作的。以下是但我会具体说明我的问题:
什么是:
jal
jr
$ra
mips 语言中的意思和重要的事情
- 当我们想要创建函数或(过程)时如何使用它们?
最佳答案
首先,您可能需要检查 this快速 MIPS 引用。这确实对我有帮助。
其次,解释一下jal
, jr
和$ra
。什么jal <label>
所做的是跳转到label
在 $ra
中标记并存储程序计数器(将其视为当前指令的地址)登记。现在,当您想从 label
返回时到你最初所在的位置,你只需使用 jr $ra
。
这是一个例子:
.text
main:
li $t0, 1
jal procedure # call procedure
li $v0, 10
syscall
procedure:
li $t0, 3
jr $ra # return
在 SPIM 模拟器中运行此程序时,您会注意到 $t0
中留下的值是 3,即在所谓的程序中加载的那个。
希望这有帮助。
关于function - MIPS 中的函数(过程),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4206363/