小编use*_*170的帖子

GCC何时插入异或eax,eax?

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

int foo(){
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

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

xor eax,eax
Run Code Online (Sandbox Code Playgroud)

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

mov eax,0x0
Run Code Online (Sandbox Code Playgroud)

被生产。

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

xor eax,eax
Run Code Online (Sandbox Code Playgroud)

带有 GCC 和 -O1 的指令还是没有优化集?

x86 assembly gcc

2
推荐指数
1
解决办法
3360
查看次数

标签 统计

assembly ×1

gcc ×1

x86 ×1