【发布时间】:2018-11-07 06:29:18
【问题描述】:
我最近一直在看反汇编的c(都是用gcc编译的)。我注意到每个函数都以
开头push rbp
mov rbp, rsp
以
结尾pop rbp
或等效的寄存器。我听说这个裁判为函数设置了一个新的堆栈,但这实际上对代码有什么好处。如果没有它,代码会不会完全一样,因为 rbp 无法在 c 中访问或碰巧(没有内联汇编),并且指针和变量都是来自 rsp
【问题讨论】:
-
它对代码有什么好处?它没有。这就是为什么 gcc 只有在你不开启优化的情况下才会这样做。
-
函数的新堆栈帧。
-
你编译没有优化?如果这是真的,编译器会尝试完全按照您在 C 中键入的方式来表示代码。
-
this 有帮助吗?
-
@PSkocik 但是如果它没有任何好处,那只是额外的说明,那么为什么它需要在那里
标签: c