当我们调用一个函数时,我们将使用Stack Pointer和Framer Pointer。 我知道SP的功能和初始位置,但FP怎么样?
答案 0 :(得分:0)
这取决于架构,应该在ABI手册中记录。
通常,函数不依赖于在序言之前正确初始化帧指针,而只是将值存储在堆栈上,然后将帧指针设置为当前堆栈指针(因此,通过跟随帧指针,您会发现固定偏移量的前一个函数的帧指针。)
请记住,帧指针在大多数情况下是可选的(如果您没有调试信息并且想要跟随调用堆栈,或者当前函数使用alloca
,则需要它,否则它是只是一个寄存器会浪费。