首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何深入理解gcc编译器?

如何深入理解gcc编译器?
EN

Stack Overflow用户
提问于 2019-03-07 08:46:47
回答 1查看 495关注 0票数 3

这个问题的背景:我试图了解编译器是如何工作的。我学到了许多新的东西:扫描仪,解析器,AST,IR,优化,前端,后端,LL(1),…我取得了渐进的进步,这是非常有趣的。现在,我想做一些实际的工作。

从程序员的角度来看,我知道为什么typedef struct { int x; mytype* next; } mytype;不编译,我知道正确的语法typedef struct mystruct { int x; struct mystruct* next; } mytype;,但是我想知道在编译过程中到底是在哪里发生的。我正在使用gcc,我想知道怎样才能使用gcc开发人员选项-fdump-.来回答这个问题。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-06-18 09:03:30

GCC编译器工作的第一步是解析器。

代码语言:javascript
复制
c-parser.c 

它将您的c或c++或其他代码解析为gimple表示:

代码语言:javascript
复制
Parse -> Gimplify -> Tree -> SSA -> Optimize -> Generate -> RTL -> Optimize RTL Generate -> ASM

例如,在终端或IDE中可以在错误输出中找到错误,如下所示:

代码语言:javascript
复制
gcc yourcode.c
yourcode.c:2:25: error: unknown type name 'mytype'
 typedef struct { int x; mytype* next; } mytype;
                         ^~~~~~

您还可以通过链接查看它是如何工作的。

对不起我的英语。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55039490

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档