1、概述
编译器完成源程序到目标程序的翻译工作,这是一个复杂的整体过程。从概念上讲,一个编译程序的整体过程可以分为3个阶段,每个阶段将程序的一种语言表示形式转换成另一种语言表示形式,并且各个阶段在逻辑上是紧密相连的。典型的划分方法是将编译器划分成前端、中端、后端三个阶段。编译器的整体结构如下示意图。
2、各阶段的作用
(1)编译器前端
编译器前端是作用于源程序的。前端通过分析高级语言代码的文本,相应的进行词法分析、语法分析、语义分析到生成中间代码的各个编译器阶段,同时还包括与前端各个阶段相关的出错处理与符号表管理等。
(2)编译器中端
编译器中端是对前端生成的中间代码进行优化。这些优化都是与目标平台无关的,主要包括冗余代码删除,常量折叠、过程间优化、循环优化、反馈优化和其他优化。
(3)编译器后端
编译器后端主要重点关注目标平台,对中间代码实现面向目标平台的特征的优化,生成符合目标机器运行需要的汇编代码。这些代码通过汇编器和链接器最终生成在目标机器上可执行的二进制程序。