gpt4 book ai didi

gcc - 为什么我的 gcc 输出中有额外的指令?

转载 作者:行者123 更新时间:2023-12-04 21:55:27 24 4
gpt4 key购买 nike

GCC 编译(使用 gcc --omit-frame-pointer -s ):

    int the_answer() { return 42; }

进入
            .Text
.globl _the_answer
_the_answer:
subl $12, %esp
movl $42, %eax
addl $12, %esp
ret
.subsections_via_symbols

'$1​​2' 常量在这里做什么,'%esp' 寄存器是什么?

最佳答案

简短回答:堆栈帧。

长答案:当您调用函数时,编译器将操纵堆栈指针以允许本地数据,例如函数变量。由于您的代码正在更改 esp ,堆栈指针,这就是我假设在这里发生的事情。我本以为 GCC 足够聪明,可以在实际不需要的地方优化它,但您可能没有使用优化。

关于gcc - 为什么我的 gcc 输出中有额外的指令?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/499842/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com