28 compiler-construction parsing gcc disassembly
我正在学习编译器课程,程序汇编遵循以下步骤
如何查看每个步骤的输出,例如我希望在语法分析后看到解析树.
我正在使用GCC编译器在Linux机器上编译程序.
我们可以通过在gcc中使用-Wa编译器选项来查看程序的汇编代码,同样可以看到Tokens,Parse tree和Inetmediate代码.
Pau*_*gar 18
虽然您可以使用gcc中的-fdump-tree-all和-fdump-rtl-all选项,但我认为它们的输出对编译器学生没有用.FWIW,我开始研究gcc作为博士研究的一部分,已经完成了两门本科课程,我发现gcc它的调试文件是不透明的,难以理解.
另外,gcc并不真正遵循编译器的教科书设计.真的,没有人这样做,因为它不能那么好用.我很确定gcc不会生成解析树或抽象语法树.它确实构建了一个IR(称为gimple),用于执行其高级优化.
我建议尝试LLVM,它的设计精良且易于理解.另一种选择是从教科书中下载代码,特别是Appel书,假设它是可用的.
另一个建议,如果我可以推荐自己的一会儿,就是使用phc.使用phc,您可以将解析树视为图像,并在编译器中的每次传递后查看AST和源代码.这是AST和解析树的部分比较.它们是使用phc简单生成的.您可以看到编译器IR,CFG,SSA表单以及类型推断和别名分析的调试输出.您还可以打开和关闭优化并传递以查看它们具有的效果.
我认为这对你有用.
Mar*_*wis 11
您可以看到预处理器输出-E.-fdump-tree-*转储树内部表示,例如-fdump-tree-all.-d存在各种选项来转储RTL中间表示,例如-fdump-rtl-all(参见手册中有关转储的转换); 另外,-dD转储所有宏定义.
| 归档时间: |
|
| 查看次数: |
13120 次 |
| 最近记录: |