【发布时间】:2013-10-11 23:08:03
【问题描述】:
是否可以说服 GCC 发出一个中间文件,其中显示:
- cmets
- 原始出处
- 扩展的宏定义
- 编译器应用的优化
- 生成的 C 或 C++ 代码将转换为汇编代码?
我宁愿看到中间 C/C++ 而不是汇编程序,但如果它有足够的注释,我也可以只使用汇编程序。
我正在尝试对几乎完全由宏组成的库进行逆向工程以扩展它。我还想看看优化的效果,以便给编译器更多的机会做更多的优化。 (也就是说,看看我之前的尝试在哪里无效)
【问题讨论】:
-
您已经知道哪些选项?我想你知道
-E用于预处理(因此扩展宏)和-S -g -fverbose-asm用于某种半注释程序集。我不确定 GCC 是否可以在优化后发出中间语言代码,您可能想看看 Clang - 它编译为完全指定的 LLVM 中间语言,可能比 x86 asm 更容易阅读。 (我不认为任何编译器实际上对 C(++) 源代码进行了优化,因此会发出可读的 C(++) 优化代码。) -
@us2012:我(部分)知道
-save-temps,但由于我无法理解的原因,我无法让它工作。如,我找不到生成的文件。