1、 引言引言n什么叫编译程序什么叫编译程序编译程序编译程序源程序源程序目标程序目标程序(*.C/*.PAS)(*.OBJ/*.EXE)编译与语言编译与语言各种用途的计算机语言各种用途的计算机语言高级程序设计语言的一般特征高级程序设计语言的一般特征高级语言的分类高级语言的分类学习内容学习内容第一章第一章 计算机语言的实现计算机语言的实现解释程序解释程序源程序源程序输入数据输入数据计算结果计算结果程序的编译执行程序的编译执行编译程序编译程序运行系统运行系统目标程序目标程序输入数据输入数据计算结果计算结果源程序源程序1.11.1 编译系统的需求分析编译系统的需求分析1.2 1.2 编译过程编译过程一个
2、一个 C C 程序的编译过程程序的编译过程2.2.语法分析语法分析3.3.语义分析语义分析程序使用的内存空间程序使用的内存空间4.4.生成中间代码生成中间代码MOV R0,#12,ADD R0,#4MUL R0,R2汇编指令代码汇编指令代码10000001 0001 1100 10000010 0001 0100 11000100 0001 0010机器指令代码机器指令代码源程序源程序目标程序目标程序其他模块其他模块n编译前端编译前端u目标机无关部分目标机无关部分1.1.词法分析、语法分析、中间代码生成词法分析、语法分析、中间代码生成2.2.语义分析、中间代码优化语义分析、中间代码优化n编译后
3、端编译后端u目标机相关部分目标机相关部分1.1.目标代码优化目标代码优化2.2.目标代码生成目标代码生成n多遍扫描多遍扫描u常见:前段常见:前段1.2.1.2.和后端和后端1.2.1.2.n集成化的程序设计环境集成化的程序设计环境u编辑程序编辑程序u编译程序编译程序u连接程序连接程序-将目标程序连接成可执行程将目标程序连接成可执行程序序u调试工具调试工具-跟踪、分析跟踪、分析n常见:常见:uTurbo C/C+uVisual Studio for C/C+,Basic 等等uJBuilder,BlueJ1.3 1.3 编译技术的通用性编译技术的通用性例例1-11-1(1/21/2)例例1-11
4、-1(2/22/2)1.4 1.4 编译程序的生成方法编译程序的生成方法n设计目标设计目标u目标程序小,执行速度快。目标程序小,执行速度快。u编译程序小,执行速度快。编译程序小,执行速度快。u诊断能力强,可靠性强。诊断能力强,可靠性强。u可移植性,可扩充性。可移植性,可扩充性。1 1)交叉编译)交叉编译n条件:条件:u 机有机有 语言的编译程序语言的编译程序n目的:目的:u实现实现 机的机的 语言的编译语言的编译1.用用 语言编制编译程序(语言编制编译程序(CP1.C)2.机器上编译该程序,得到(机器上编译该程序,得到(CP1.EXE)3.在在A机器上,运行机器上,运行CP1.EXE编译编译C
5、P1.C,得到得到B机的机的C编译程序(编译程序(CP2.EXE)。)。1.用用 语言编制编译程序(语言编制编译程序(CP1.C)2.机器上编译该程序,得到(机器上编译该程序,得到(CP1.EXE)3.在在A机器上,运行机器上,运行CP1.EXE编译编译CP1.C,得到得到B机的机的C编译程序(编译程序(CP2.EXE)。)。1.用汇编语言实现一个用汇编语言实现一个 子集的编译程序子集的编译程序2.用汇编程序处理该程序,得到用汇编程序处理该程序,得到CP1.EXE3.用用 子集编制子集编制 语言的编译程序语言的编译程序4.用用CP1.EXE处理该程序,得到处理该程序,得到CP2.EXE3)3)利用编译程序自动生成器利用编译程序自动生成器词法规则说明词法规则说明词法分析程序词法分析程序(C程序程序)输入:输入:词法(正规表达式)词法(正规表达式)识别动作(程序段)识别动作(程序段)输出:输出:yylex()函数函数语法分析器的自动生成程序语法分析器的自动生成程序语法规则说明语法规则说明语法分析程序语法分析程序(C程序程序)输入:输入:语法规则(产生式)语法规则(产生式)语义动作(程序段)语义动作(程序段)输出:输出:yyparse()函数函数思考题思考题