我最近一直在看反汇编的c(全部用gcc编译)。我注意到每个函数都以
开头push rbp
mov rbp, rsp
以
结尾pop rbp
或等效的寄存器。我听说过这个裁判为这个函数设置了一个新的堆栈,但是这对代码有什么好处呢。如果没有它,代码是否会完全相同,因为rbp无法在c中访问或偶然(没有内联汇编),指针和变量都是rsp
的偏移
答案 0 :(得分:1)
在执行函数期间,堆栈指针可能会因计算期间用于临时存储而变化。但是,您仍然可以访问函数参数,这些函数参数是基指针(rbp)的偏移量。