曹大,关于函数调用时寄存器的位置,伪SP, 硬件SP, FP
函数调用时,栈是从高地址向低地址增长?
虚拟的SP寄存器,指向的对应的是栈的底部,其实高地址?
真的硬件SP寄存器对应的是栈顶,其实对应的是低地址?
调用方在调用函数时,已经将被方的入参和返回地址分配自己当前的栈上,所以被调方通过 FP+offset 的方式访问入参和返回值?
被调函数通过虚拟的SP减去偏移量访问局部变量,最先分配的局部变量其实离虚拟的SP远,离硬件SP近?
例如:
func p() {
var a int
var b int
var c int
}
访问a其实是 a-24(SP) 或者 0(SP)?
40
收起
正在回答 回答被采纳积分+1
1回答
Xargin
2021-05-20 00:41:00
你这个就比较卷了,要学细节看看我以前写的 plan9 汇编总结吧
https://github.com/cch123/golang-notes/blob/master/assembly.md
里面应该能解答大部分 plan9 汇编的疑问
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星