如何查看gcc(任何风格)编译器为C/C++程序生成的汇编代码?

veh*_*zzz 37 c c++ assembly code-generation

我正在尝试优化大量的乘法和指针算术,并希望看到编译器在我放入优化标志时所做的事情.

- 编辑 -

如何将其限制为特定功能或代码块?

--Edit_2--

如何让gcc生成一个不那么详细的汇编代码?

P S*_*ved 39

-S开关添加到命令行.

编辑:不要忘记它会将程序集放在您在-oswitch 下指定的文件中.

  • 您可以使用 `gcc -O3 -march=native foo.c -S -o- | less` 通过管道传输到 `less` 而不是创建一个 `.s` 文件。另请参阅[如何从 GCC/clang 程序集输出中删除“噪音”?](/sf/ask/2698648151/ assembly-output) 了解更多信息有关查看 asm 输出的“有趣部分”的提示,尤其是 **Matt Godbolt 的 CppCon2017 演讲:[“我的编译器最近为我做了什么?打开编译器的盖子”](https://youtu.be/bSkpMdDe4g4)** (2认同)

Chr*_*isW 9

如何将其限制为特定功能或代码块?

将该函数放在单独的源文件中(并为该源文件使用不同的命令行参数).


Chr*_*ris 5

您也可以在调试器中运行该程序,gdb并使用反汇编视图.在gdb可以使用的命令disass/m来查看与当前位置的C代码混合组件.