以下为参考课件与《编译技术》(张莉等著)的个人整理,若有错误欢迎指出
第一章 编译概论
一、基本概念
1、源程序:用汇编语言或高级语言编写的程序称为源程序
2、目标程序:用目标语言所表示的程序
- 目标语言: 可以是介于源语言和机器语言之间的“ 中间语言” , 可以是某种机器的机器语言,也可以是某机器的汇编语言。
3、翻译程序:将源程序语义等价转换为目标程序的程序 ,包括汇编程序、编译程序等

汇编程序:源程序是汇编语言, 翻译后是机器语言
编译程序:源程序是高级语言,翻译后是目标程序
4、解释程序:对源程序进行解释执行的程序。
可对高级语言、中间语言解释执行
与纯编译的相比,
优点:动态确定易修改;方便调试;存储量小
缺点:执行效率低(每次都得重新翻译)

5、编译-解释执行系统(如java)
二、编译过程
1、编译过程:指将高级语言程序翻译为等价的目标程序的过程
2、基本阶段
五个逻辑阶段:
(1)词法分析
分析和识别单词
一般语言有保留字、标识符、常量、连接符(分界符和运算符)四类单词。
(2)语法分析
根据语法规则(文法)分析出各种语法成分(如表达式、各种说明等),并检查语法正确性
(3)语义分析、生成中间代码
对识别出的各种语法成分进行语义分析,并产生相应的中间代码。 【语义的等价翻译】
中间代码是介于源语言和目标语言之间,可由编译程序设计者设计。如四元式(运算符、左对象、右对象、结果)等
目的:便于做优化和编译程序的移植
(4)代码优化
更高效的目标程序,即保持功能不变,尽可能简短,减少存储和运行时间
(5)生成目标程序
中间代码生成目标程序
五个阶段中都要做:
(1)建表和查表(符号表管理)
及时维护符号表,方便快速查找
符号表:记录源程序的标识符及其属性信息
(2)出错处理
3、遍(PASS):对源程序( 包括源程序中间形式) 从头到尾扫描一次,并做有关的加工处理 , 生成新的源程序中间形式或目标程序,通常称之为一遍。
区别基本阶段:
遍 指完成5个基本阶段要经过几次扫描。

4、编译程序的前端和后端
- 前端: 与源程序有关的编译部分。
如:词法分析、 语法分析、 语义分析、 中间代码生成、代码优化——分析部分
特点: 与源语言有关 - 后端: 与目标机有关的部分。
目标程序生成( 与目标机有关的优化)——综合部分
特点: 与目标机有关
why分为前后端:
根据源语言、目标机的不同,灵活改写、搭配
5、编译程序的前后处理器