《编译原理绪论》PPT课件.ppt





《《编译原理绪论》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《编译原理绪论》PPT课件.ppt(34页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第第 1 1 讲讲西北农林科技大学本科教程西北农林科技大学本科教程 主讲教师:主讲教师:赵建邦赵建邦 办公地址:办公地址:信息学院信息学院403403联系电话:联系电话:电子邮箱:电子邮箱:联系方式联系方式教材和参考书教材和参考书u关于关于编译原理编译原理l1 1 编译原理理论概述编译原理理论概述l2 2 学习目标学习目标l3 3 学习方法学习方法u重点掌握重点掌握l1 1 翻译、解释、编译的区别和联系翻译、解释、编译的区别和联系l2 2 编译过程分为哪些步骤编译过程分为哪些步骤本讲目标本讲目标 第一章第一章 绪论绪论l1.1 1.1 程序设计语言和编译程序程序设计语言和编译程序l1.2 1.
2、2 编译程序的历史及发展编译程序的历史及发展(自学自学)l1.3 1.3 编译过程和编译程序结构编译过程和编译程序结构l1.4 1.4 编译程序的开发编译程序的开发l1.5 1.5 构造编译程序所应具备的知识内容构造编译程序所应具备的知识内容u计算机的指令系统计算机的指令系统计算机所能执行的计算机所能执行的每一种操作每一种操作称为一条称为一条指令指令,计算机能够,计算机能够执行的全部指令集合就是该计算机的执行的全部指令集合就是该计算机的指令系统指令系统。指令格式:指令格式:操作码操作码 操作地址码操作地址码PCPC的指令规模一般是的指令规模一般是300500300500条。条。可执行程序就是不
3、同指令的反复组合。可执行程序就是不同指令的反复组合。1.1 1.1 程序设计语言和编译程序程序设计语言和编译程序算术运算、逻辑运算、算术运算、逻辑运算、存数、取数、转移等。存数、取数、转移等。指出该条指令涉及的操指出该条指令涉及的操作数的地址。作数的地址。低级语言低级语言u机器语言机器语言 二进制形式的指令序列二进制形式的指令序列称为某计算机的称为某计算机的机器语言机器语言,也是计,也是计算机唯一能够直接识别并执行的语言。算机唯一能够直接识别并执行的语言。u汇编语言汇编语言用用助记符助记符代替机器语言的二进制指令,所生成的语言就是代替机器语言的二进制指令,所生成的语言就是汇编语言汇编语言。例如
4、用例如用“MOVMOV”代替代替“00010001”,用,用“ADDADD”代替代替“00110011”,1.1 1.1 程序设计语言和编译程序程序设计语言和编译程序低级语言低级语言u举例:计算举例:计算“b=a+2b=a+2”u显然,汇编语言比机器语言有了长足的进步。但仍存在以下显然,汇编语言比机器语言有了长足的进步。但仍存在以下缺点:缺点:严重依赖目标机器;严重依赖目标机器;不易开发、调试;不易开发、调试;和自然语言存在鸿沟,可读性差。和自然语言存在鸿沟,可读性差。1.1 1.1 程序设计语言和编译程序程序设计语言和编译程序MOV a,R1ADD#2,R1MOV R1,b0001 01 0
5、0 000000000011 01 10 000000100010 01 00 00000100汇编语言机器语言汇编程序高级语言的发展高级语言的发展1.1 1.1 程序设计语言和编译程序程序设计语言和编译程序高级语言高级语言高级语言已经从具体机器中抽象出来,摆脱了依赖具体机高级语言已经从具体机器中抽象出来,摆脱了依赖具体机器的问题。器的问题。高级语言虽然更符合人类的思维习惯,但高级语言程序也高级语言虽然更符合人类的思维习惯,但高级语言程序也必须必须翻译翻译(编译编译)成最终能够直接执行的机器语言程序。而成最终能够直接执行的机器语言程序。而且,这个难度比汇编过程大大增加。且,这个难度比汇编过程大
6、大增加。1.1 1.1 程序设计语言和编译程序程序设计语言和编译程序从从1966年至今,所有颁布的图灵奖中,有三分之一年至今,所有颁布的图灵奖中,有三分之一的奖项颁布给了对高级程序设计语言和编译理论有的奖项颁布给了对高级程序设计语言和编译理论有杰出贡献的科学家。杰出贡献的科学家。程序设计语言的转换程序设计语言的转换u翻译翻译是指将某种语言的源程序,在不改变语义的条件下,转换是指将某种语言的源程序,在不改变语义的条件下,转换成另一种语言程序成另一种语言程序目标语言程序目标语言程序l编译编译专指由高级语言程序一次性转换成低级语言程序,专指由高级语言程序一次性转换成低级语言程序,类似于类似于全文翻译
7、全文翻译l解释解释接受某高级语言的一个语句输入,进行解释并控制计算机接受某高级语言的一个语句输入,进行解释并控制计算机执行,得到这个语句的执行结果后,等待下一个语句的解执行,得到这个语句的执行结果后,等待下一个语句的解释执行,执行过程中并不产生目标程序。释执行,执行过程中并不产生目标程序。类似于口译类似于口译1.1 1.1 程序设计语言和编译程序程序设计语言和编译程序不同高级语言程序的执行类型不同高级语言程序的执行类型:u编译型(本课程只关注编译型)编译型(本课程只关注编译型)C C、C+C+、PascalPascal、DelphiDelphi等:生成目标程序。等:生成目标程序。u解释型解释型
8、BASICBASIC、UnixUnix的的shellshell、网络浏览器(将、网络浏览器(将HTMLHTML及及JavascriptJavascript等脚本程序解释执行)等;等脚本程序解释执行)等;u特殊型特殊型即时编译:即时编译:JavaJava:先翻译成较低级的字节码程序,然后编:先翻译成较低级的字节码程序,然后编译为机器语言程序。译为机器语言程序。1.1 1.1 程序设计语言和编译程序程序设计语言和编译程序在翻译的过程中,必须始终遵循的原则是:在逻辑上等价。在翻译的过程中,必须始终遵循的原则是:在逻辑上等价。编译型高级语言程序的阶段:编译型高级语言程序的阶段:高级语言程序的执行通常分
9、为高级语言程序的执行通常分为两个阶段两个阶段:编译阶段编译阶段和和运运行阶段行阶段。编译程序编译程序就是指这样一种程序,通过它能够将用高级语就是指这样一种程序,通过它能够将用高级语言编写的源程序转换成与之在逻辑上等价的低级语言形式的言编写的源程序转换成与之在逻辑上等价的低级语言形式的目标程序(如目标程序(如C C语言下的语言下的exeexe)u编译:编译:u运行:运行:初始数据初始数据 +目标程序目标程序 +运行系统运行系统 计算结果计算结果1.1 1.1 程序设计语言和编译程序程序设计语言和编译程序高级语言程序的执行分为高级语言程序的执行分为三个阶段三个阶段的情况:的情况:编译阶段编译阶段、
10、汇编阶段汇编阶段和和运行阶段运行阶段。1.1 1.1 程序设计语言和编译程序程序设计语言和编译程序源程序编译程序汇编语言汇编程序目标代码编译阶段汇编阶段目标代码运行系统初始数据计算结果运行阶段思考:解释和编译的主要区别是什么?思考:解释和编译的主要区别是什么?u机器语言的诞生机器语言的诞生例:例:C7 06 0000 0002 C7 06 0000 0002(将数字(将数字2 2移到地址移到地址0000)0000)u汇编语言和汇编程序的诞生汇编语言和汇编程序的诞生例:例:MOV X,2(MOV X,2(功能和上式类似功能和上式类似,其中其中X X的值赋值为的值赋值为0 0)u第一个高级语言第一
11、个高级语言FORTRANFORTRAN及其编译器的诞生(及其编译器的诞生(19571957,IBMIBM)uChomskyChomsky研究了语言和文法的数学理论研究了语言和文法的数学理论0 0型、型、1 1型、型、2 2型、型、3 3型型u编译程序的自动生成研究编译程序的自动生成研究YACCYACC、JavaCC:JavaCC:语法分析器自动生成工具语法分析器自动生成工具1.2 1.2 编译程序的历史及发展(里程碑意义的事件)编译程序的历史及发展(里程碑意义的事件)u联系实际,想想自然语言的翻译联系实际,想想自然语言的翻译Let me show you!Let me show you!翻译成
12、中文的五个阶段:翻译成中文的五个阶段:词法分析:识别出句子中的一个个单词词法分析:识别出句子中的一个个单词语法分析:分析句子的语法结构,是否符合英语语法语法分析:分析句子的语法结构,是否符合英语语法语义分析:对正确的英文句子分析其含义,并用汉语语义分析:对正确的英文句子分析其含义,并用汉语表示表示优化:根据上下文的关系以及汉语的表达习惯对中文优化:根据上下文的关系以及汉语的表达习惯对中文句子做修饰工作句子做修饰工作输出全部中文输出全部中文1.3 1.3 编译过程和编译程序结构编译过程和编译程序结构u高级语言程序的编译过程高级语言程序的编译过程输入:输入:源程序源程序,输出:,输出:目标程序目标
13、程序五个阶段:五个阶段:词法分析词法分析 语法分析语法分析 语义分析和中间代码生成语义分析和中间代码生成中间代码优化中间代码优化 目标代码生成目标代码生成1.3 1.3 编译过程和编译程序结构编译过程和编译程序结构u1.3.1 1.3.1 词法分析词法分析任务:任务:将源程序中的字符串变换成单词符号流将源程序中的字符串变换成单词符号流例如,如下的例如,如下的C C语言程序:语言程序:通过词法分析得到如下单词符号:通过词法分析得到如下单词符号:关键字:关键字:float标识符:标识符:position initial rate常数:常数:60运算符:运算符:+*界符:界符:,;=1.3 1.3
14、编译过程和编译程序结构编译过程和编译程序结构 float position,initial,rate;position=initial+rate*60;词法分析所遵循的是词法分析所遵循的是语语言的构词规则言的构词规则u1.3.2 1.3.2 语法分析语法分析任务:任务:根据语法规则,从单词符号串中识别出各种语法单根据语法规则,从单词符号串中识别出各种语法单位(如表达式、说明、程序段等),并检查语法结构的正位(如表达式、说明、程序段等),并检查语法结构的正确性。确性。“position=initial+rate*60;”包含哪些语法单位包含哪些语法单位?被定义为:被定义为:=被定义为:被定义为:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 编译原理绪论 编译 原理 绪论 PPT 课件

限制150内