gpt4 book ai didi

gcc - GCC 何时插入 xor eax,eax?

转载 作者:行者123 更新时间:2023-12-02 22:23:06 29 4
gpt4 key购买 nike

我正在二进制文件中搜索特定指令,对于 xor eax,eax 指令,我有一个函数,如:

int foo(){
return 0;
}

如果我用 GCC 4.7.2 和 -O2 或 -O3 优化标志编译它,foo() 的汇编结果很好

xor eax,eax

在退出函数之前。相反,如果使用 -O1 编译甚至没有优化,经典的

mov eax,0x0

已制作。

问题是:是否有任何其他方式(就 C 代码而言且没有 __asm 指令)生成

xor eax,eax

使用 GCC 和 -O1 或没有优化集的指令?

最佳答案

insn xor %eax, %eax 是在窥孔优化期间生成的。粗略地说,窥孔优化 channel 遍历代码以寻找常见的模式/习惯用法,这些模式/习惯用法已知在 objective-c PU 上表现更好。

要回答您的问题,您必须使用 -fpeephole2 启用窥孔优化。

附言。 -fpeephole2-O2 启用,但不由 -O1 启用。

关于gcc - GCC 何时插入 xor eax,eax?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13401612/

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