[英]Using GCC to output commented & annotated intermediate files
是否有可能说服GCC发出一个中间文件,其中显示:
我宁愿看中间的C / C ++而不是汇编程序,但如果它被充分注释我也可以使用汇编程序。
我正在尝试对几乎完全由宏组成的库进行逆向工程以扩展它。 我也希望看到优化的效果,以便为编译器提供更多优化的机会。 (换句话说,看看我以前的尝试无效)
GCC不是直接应用C ++中的优化 - 代码,而是采用某种内部语言无关的格式(称为GIMPLE),这种格式无法轻易地恢复为C ++代码。
根据您的需要,您也可以
只需展开宏: g++ -E
或者查看汇编程序输出,您可以在其中查看哪行C ++代码映射到哪个汇编程序块:
g++ -g ... && objdump -S output
我不建议直接从gcc(带-S)输出汇编程序,因为生成的注释几乎没用。
1和2显示在原始源中。
3您可以使用-E
获取扩展宏定义(实际上是完全预处理的)源。
4可以使用-da
或各种-fdump-rtl-xxx
, -fdump-tree-xxx
和其他-fdump-xxx
选项获得不同优化阶段的中间代码。
这些记录在这里:
http://gcc.gnu.org/onlinedocs/gcc-4.8.1/gcc/Debugging-Options.html#Debugging-Options
5我不认为GCC会进行源到源的转换,因此生成的C ++代码是原始的C ++代码。
GCC所做的转换如下所述:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.