Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我正在研究一个使用过程的 MIPS 代码,但我不明白堆栈(sp)和帧指针(fp)的目的是什么。
例如,我研究的代码如下所示。它会打印您输入的数字之前的所有数字,例如 3. 3,2,1,0,并显示它使用了多少堆栈大小。在此示例中,它使用了 16。我将其更改-4为-8,但出现错误。但是,我注意到其他一些使用-8.
-4
-8
问题是我错过了什么?
proc: addi $sp,$sp,-4 # sw $ra,0($sp) # push $ra
在调用函数之前将返回地址压入堆栈。这就是代码的作用。-4 表示通过向上移动堆栈指针在堆栈上“分配”4 个字节,以便可以写入返回地址。
上面的解释假设了寄存器的正常使用。
在我看到代码之前,我无法对 -8 的作用做出结论。但它可能会为函数的参数保留空间。