我正在研究使用过程的MIPS代码,但我无法理解堆栈(sp)和帧指针(fp)的用途是什么。
例如,我研究的代码如下所示。它会在您输入的数字之前打印所有数字,例如3. 3,2,1,0并显示它使用了多少堆栈大小。在此示例中,它使用了16.我将-4
更改为-8
,但我收到了错误消息。
但是,我注意到其他一些使用-8
的代码。
问题是我缺少什么?
proc:
addi $sp,$sp,-4 #
sw $ra,0($sp) # push $ra
答案 0 :(得分:1)
在调用函数之前将返回地址压入堆栈。这就是代码的作用。 -4表示通过向上移动堆栈指针在堆栈上“分配”4个字节,以便可以写入返回地址。
上面的解释假设了寄存器的正常使用。
在看到代码之前,我无法总结-8的作用。但它可能为函数的论证保留了空间。