gpt4 book ai didi

gcc - 在编译过程中如何查看解析树、中间代码、优化代码和汇编代码?

转载 作者:行者123 更新时间:2023-12-02 03:49:20 28 4
gpt4 key购买 nike

我正在学习编译器类(class),程序的编译遵循以下步骤

  1. 词法分析
  2. 语法分析
  3. 语义分析
  4. 中间代码生成
  5. 代码优化
  6. 目标代码生成。

如何查看每个步骤的输出,例如我想在语法分析后查看解析树。

我正在使用 GCC 编译器在 Linux 机器上编译程序。

我们可以通过gcc中的-Wa编译器选项来查看程序的汇编代码,同样还有查看Tokens、Parse tree和Inetmediate code的选项。

最佳答案

虽然您可以在 gcc 中使用 -fdump-tree-all-fdump-rtl-all 选项,但我认为它们的输出不是很有用给编译器学生。 FWIW,我开始研究 gcc 作为我博士研究的一部分,已经完成了两门本科类(class),我发现 gcc 及其调试文件不透明且难以理解。

此外,gcc 并没有真正遵循编译器的教科书设计。事实上,没有人这样做,因为那样做效果不好。我很确定 gcc 不会生成解析树或抽象语法树。它确实构建了一个 IR(称为 gimple)来执行高级优化。

我建议尝试 LLVM,它以设计精良且易于遵循而闻名。另一种选择是从教科书中下载代码,尤其是 Appel 书中的代码(假设有)。

另一个建议(如果我可以暂时推荐一下我自己的建议的话)是使用 phc 。使用 phc,您可以将解析树视为图像,并在编译器中每次通过后查看 AST 和源代码。 Here is a comparison of parts of the AST and the parse tree 。它们是使用 phc 简单生成的。您可以看到编译器 IR、CFG、SSA 形式以及类型推断和别名分析的调试输出。您还可以打开和关闭优化和传递以查看它们的效果。

我认为这对你有用。

关于gcc - 在编译过程中如何查看解析树、中间代码、优化代码和汇编代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1496497/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com