编译器 编译步骤

一.预编译

1.宏定义展开#define #include #indef
2.删除注释 ( /* *///
3.保留#pragma,给后续编译用
4.添加行号,方便追查

二.词法分析

通过 有限状态机算法把你写的字符串分割成一个个的记号token
对这些token进行简单的归类

三.生成抽象语法树

1.语法分析

把token流,按顺序输入语法分析器去解读,最终将我们希望表达的自然语义,构建成了一个逻辑上的计算机能识别,能执行,能遍历的结构–树状结构-----抽象语法树 。

2.语义分析

对整个语法树进行遍历,静态分析,把每个节点的表达式都标识类型,并且验证是否合法。

四.生成中间码

中间码就是ATS和汇编代码之间的一层。它不直接生成汇编,而是在中间码的设计里打平了平台和硬件的差异。

五.生成最终的汇编代码

1.目标代码生成

由中间码生成汇编码

2.目标代码优化

对汇编代码进行优化

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 前言 2000年,伊利诺伊大学厄巴纳-香槟分校(University of Illinois at Urbana-...
    星光社的戴铭阅读 16,138评论 8 180
  • 所有这一张中的示例代码,以 Hello World 和 hello.c 为基准2.1 被隐藏了的过程GCC 编译过...
    RX78178阅读 3,308评论 0 0
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 175,270评论 25 709
  • 有几根头发飘进了她眼睛,她感到刺痛,用力地揉眼睛,眼睛象海绵一样流出水来,弄湿了她的手指。她想到应该去市场买点儿吃...
    枕麦阅读 1,625评论 0 0
  • 炒米糖,皖江流域人家过年待客的小零食。以前家里也年年备着,吃的人却越来越少。一来早年都是农村里自己做,现在摊贩卖的...
    水善利万物而不争阅读 1,293评论 0 0