MIPS中的堆栈。 4在addi $ sp,$ sp,-4中的目的是什么?

时间:2012-06-26 07:39:09

标签: assembly mips

我正在研究使用过程的MIPS代码,但我无法理解堆栈(sp)和帧指针(fp)的用途是什么。

例如,我研究的代码如下所示。它会在您输入的数字之前打印所有数字,例如3. 3,2,1,0并显示它使用了多少堆栈大小。在此示例中,它使用了16.我将-4更改为-8,但我收到了错误消息。 但是,我注意到其他一些使用-8的代码。

问题是我缺少什么?

proc:
    addi $sp,$sp,-4     # 
    sw   $ra,0($sp)     # push $ra  

1 个答案:

答案 0 :(得分:1)

在调用函数之前将返回地址压入堆栈。这就是代码的作用。 -4表示通过向上移动堆栈指针在堆栈上“分配”4个字节,以便可以写入返回地址。

上面的解释假设了寄存器的正常使用。

在看到代码之前,我无法总结-8的作用。但它可能为函数的论证保留了空间。