gcc编译原理
来源:互联网 发布:雪迪龙网络报销系统 编辑:程序博客网 时间:2024/04/30 23:17
引言
gcc现在的意思是“GUN编译器集合”,这里说的是上个世纪的意思“GUN C语言编译器”。
2.1程序的一般编译过程
以gcc为例:
一般情况下,比如我们有一个源文件:main.c,里面写的是我们的代码。想执行以下,gccmain.c,执行以下这个命令就会生成一个a.out的文件。然后./a.out就可以执行了。但是,这中间的过程可注意过吗?这就是编译原理要研究的内容了。这一节先说一下整个的处理过程,具体细节会在以后逐渐讨论,包括,词法分析,语法分析,中间代码生成和优化,优化又包括机器无关优化,并行性和局部性优化,等等这些内容。以及如何自己发明一种语言,然后自己动手写一个编译器将其编译!
分别加入参数可查看各个阶段的结果。
在上图中,CPP是“预编译”的缩写,AST是“抽象语法树”的缩写,SSA是“静态单赋值”的缩写,RTL是“寄存器传输语言”的缩写。各种含义,需要仔细品味一下,呵呵。
过程如下:
1》将不同语言,进行词法分析,语法分析,得到对应语言的AST
2》这些AST之间有稍微的差别,然后把这些差别去除,生成通用AST
3》按照AST,生成中间代码(三地址代码,即:x=y op z)
4》对中间代码进行优化,这部分的任务很艰巨
5》根据目标机器的汇编描述,生成对应机器架构的汇编语言
6》到此编译器的任务就算完了,剩下的汇编器。
7》汇编器将其汇编成机器代码(010100101000101010010101
8》连接器ld将源码中调用的库函数连接进来
9》最后,是加载器,将可执行文件加载到内存,并执行之。
2.2编译器的前端处理过程
下面是一句简单的c语句的编译过程。
如图所示:
2.3小结
一个高级语言写的程序的执行,要经过很复杂漫长的过程。这个过程对我们程序员来说却经常被忽视。
向编译器创造者致敬。
编译原理的学习过程一般比较枯燥,多一个人同行,就多一份趣味和快乐!
作者:rill_zhen
- gcc编译原理选项
- gcc编译原理
- gcc编译原理
- GCC/G++编译原理分析
- GCC/G++编译原理分析
- GCC/G++编译原理分析
- GCC/G++编译原理分析
- 深入浅出编译原理-2-gcc编译器概览
- gcc 编译工具(上)--- 编译过程和原理浅析
- gcc/g++等编译器 编译原理: 预处理,编译,汇编,链接
- 编译原理大作业(用java编写小型GCC 编译器)
- gcc程序的编译过程和链接原理
- GCC原理
- gcc编译
- GCC编译
- 编译GCC
- GCC编译
- gcc编译
- 指针定义不分配内存
- 定义指针不分配内存
- 定义和指针
- linux不使用文件名扩展识别文件类…
- static 变量和函数
- gcc编译原理
- C/C++常用时间函数介绍
- 堆和栈内存分配问题
- 手机掌控家居,体验新鲜智能家居生…
- 智能家居
- 深搜专题初步-1006
- 智能家居带来冲击,墙面开关面临消…
- fread 返回 0的情况
- 文字渐变效果:图层中的mask属性