南邮计算机复试 编译原理 第一章

上传人:子 文档编号:56923969 上传时间:2018-10-17 格式:PPT 页数:91 大小:1.29MB
返回 下载 相关 举报
南邮计算机复试  编译原理 第一章_第1页
第1页 / 共91页
南邮计算机复试  编译原理 第一章_第2页
第2页 / 共91页
南邮计算机复试  编译原理 第一章_第3页
第3页 / 共91页
南邮计算机复试  编译原理 第一章_第4页
第4页 / 共91页
南邮计算机复试  编译原理 第一章_第5页
第5页 / 共91页
点击查看更多>>
资源描述

《南邮计算机复试 编译原理 第一章》由会员分享,可在线阅读,更多相关《南邮计算机复试 编译原理 第一章(91页珍藏版)》请在金锄头文库上搜索。

1、1,编 译 原 理 Compiler Principles,徐小龙 PhD 南京邮电大学.计算机学院,第一章 概 述,教材:编译技术原理及其实现方法王汝传 编著,2,第一章 概 述,1.1 程序设计语言一、语言的概念和分类二、程序设计语言简述 1.2 翻译程序一、汇编程序 二、解释程序三、编译程序1.3 编译程序简史一、汇编语言阶段(50年代初)二、高级程序语言出现(1956年)编译程序开始三、编译程序理论开始确定(1960年)四、编译程序技术方法进一步发展(70年代起) 1.4 编译过程简述一、编译步骤二、编译过程简述三、趟程(遍) 1.5 编译程序的生成一、编写编译程序的一般方法二、编译

2、程序开发技术三、编译程序的自动生成,3,第一章 概 述,1.1 程序设计语言一、语言的概念和分类二、程序设计语言简述 1.2 翻译程序一、汇编程序 二、解释程序三、编译程序1.3 编译程序简史一、汇编语言阶段(50年代初)二、高级程序语言出现(1956年)编译程序开始三、编译程序理论开始确定(1960年)四、编译程序技术方法进一步发展(70年代起) 1.4 编译过程简述一、编译步骤二、编译过程简述三、趟程(遍) 1.5 编译程序的生成一、编写编译程序的一般方法二、编译程序开发技术三、编译程序的自动生成,4,第一章 概 述,1.1 程序设计语言 一、语言的概念和分类1.概念2.语言的分类 二、程

3、序设计语言简述1.机器语言(第一代语言)2.汇编语言(第二代语言:50年代中期出现)3.高级程序设计语言(第三代语言:50年代中期提出)4.超高级程序设计语言(第四代语言),5,第一章 概 述,1.1 程序设计语言 一、语言的概念和分类1.概念2.语言的分类 二、程序设计语言简述1.机器语言(第一代语言)2.汇编语言(第二代语言:50年代中期出现)3.高级程序设计语言(第三代语言:50年代中期提出)4.超高级程序设计语言(第四代语言),6,1.1 程序设计语言 一、语言的概念和分类1.概念语言是人类所特有的用来表达意思、交流思想的工具,是一种特殊的社会现象,由语音、词汇、语法、语义构成一个系统

4、。语言包括口语和书面形式。,7,1.1 程序设计语言 一、语言的概念和分类2.语言的分类(1)自然语言人与人之间交流信息的一种语言. 动物之间通过动物语言交流信息.(2)数理语言以数理逻辑、集合论和统计数学来描述的一种语言。 例如,用计算机进行几何定理的证明就得以数理语言形式进行描述。(3)程序设计语言人和计算机进行信息交流的一种语言,它遵循一定的语法和语义的规则,而编译程序的功能正是:1)讨论语法,检查程序正确性2)讨论语义,生成目标代码,8,第一章 概 述,1.1 程序设计语言 一、语言的概念和分类1.概念2.语言的分类 二、程序设计语言简述1.机器语言(第一代语言)2.汇编语言(第二代语

5、言:50年代中期出现)3.高级程序设计语言(第三代语言:50年代中期提出)4.超高级程序设计语言(第四代语言),9,第一章 概 述,1.1 程序设计语言 一、语言的概念和分类1.概念2.语言的分类 二、程序设计语言简述1.机器语言(第一代语言)2.汇编语言(第二代语言:50年代中期出现)3.高级程序设计语言(第三代语言:50年代中期提出)4.超高级程序设计语言(第四代语言),10,二、程序设计语言简述,机器语言(第一代)低级语言汇编语言(第二代)初期 :FORTRAN、ALGOL、COBOL发展期 :LISP、APL、SNOBOL、PL/1、(第三代) SIMULA、BASIC 程序设计语言

6、高级语言 结构化时期 :PASCAL、MODULA-2、Ada、C函数式:ML、LISP、APL多范型时期 逻辑式:PROLOG面向对象:Smalltalk、C+、Java(第四代) SQL 网络 :Java、Perl、C#超高级语言 报表语言MAPPER,1.1 程序设计语言,11,第一章 概 述,1.1 程序设计语言一、语言的概念和分类二、程序设计语言简述 1.2 翻译程序一、汇编程序 二、解释程序三、编译程序1.3 编译程序简史一、汇编语言阶段(50年代初)二、高级程序语言出现(1956年)编译程序开始三、编译程序理论开始确定(1960年)四、编译程序技术方法进一步发展(70年代起) 1

7、.4 编译过程简述一、编译步骤二、编译过程简述三、趟程(遍) 1.5 编译程序的生成一、编写编译程序的一般方法二、编译程序开发技术三、编译程序的自动生成,12,第一章 概 述,1.2 翻译程序一、汇编程序 二、解释程序三、编译程序,13,1.2 翻译程序只有机器语言编的程序才能被计算机识别并运行,为了能使汇编语言和高级程序设计语言编写的程序被计算机接受,必须将它们转换成具体的机器语言程序。我们将要介绍的汇编程序、解释程序和编译程序就是完成这种转换功能的翻译程序。翻译程序将一种语言程序(称为源程序)改造成另一种等价的语言程序(称为目标程序)的程序。 源语言书写源程序的语言称为源语言. 目标语言书

8、写目标程序的语言称为目标语言.,14,第一章 概 述,1.2 翻译程序一、汇编程序 二、解释程序三、编译程序,15,第一章 概 述,1.2 翻译程序一、汇编程序 二、解释程序三、编译程序,16,汇编程序:把汇编语言写的源程序翻译成机器语言的目标程序,这个翻译过程称为汇编。如下图:初始数据 汇编源程序 汇编程序 目标程序 结果数据汇编程序执行过程汇编程序一般对源程序进行两遍扫描来完成。第一遍:进行存贮分配,造出第二遍扫描时用的各种表格;第二遍:用机器语言操作码来代替汇编符号操作码。,1.2 翻译程序一、汇编程序,17,第一章 概 述,1.2 翻译程序一、汇编程序 二、解释程序三、编译程序,18,

9、第一章 概 述,1.2 翻译程序一、汇编程序 二、解释程序三、编译程序,19,解释程序:将高级语言写的源程序作为输入数据,但并不产生目标 程序,而是边解释边执行源程序本身的一种程序。如下图源程序 解 结释 果程 数初始数据 序 据解释程序执行过程,解释程序适合于会话型语言,如BASIC语言。 主要优点: 1,易于为用户提供调试功能,对源程序的语法分析及出错处理都很及时, 2,修改调试也很方便,但是解释程序执行速度较慢,运行效率低。,1.2 翻译程序二、解释程序,20,第一章 概 述,1.2 翻译程序一、汇编程序 二、解释程序三、编译程序,21,第一章 概 述,1.2 翻译程序一、汇编程序 二、

10、解释程序三、编译程序,22,编译程序 是将高级语言写的源程序翻译成目标语言(汇编语言、机器语言)的程序。这种翻译过程称为编译。 编译系统 目标程序,再加上运行系统(如服务子程序、动态分配程序、装配程序等)就可获得计算结果,整个系统称为编译系统。,1.2 翻译程序三、编译程序,23,编译程序执行过程,源程序,编译程序,目标程序 (机器语言),源程序,编译程序,目标程序 (汇编语言),汇编程序,目标程序 (机器语言),编译阶段,编译阶段,汇编阶段,目标程序 (机器语言),运行系统,可执行程序,结果数据,运行阶段,24,上述三种翻译程序,汇编程序最容易实现,其次是解释程序,编译程序最难。所以只要掌握

11、了编译程序实现方法,汇编程序和解释程序就迎刃而解了。下面我们就具体介绍一下编译程序,25,第一章 概 述,1.1 程序设计语言一、语言的概念和分类二、程序设计语言简述 1.2 翻译程序一、汇编程序 二、解释程序三、编译程序1.3 编译程序简史一、汇编语言阶段(50年代初)二、高级程序语言出现(1956年)编译程序开始三、编译程序理论开始确定(1960年)四、编译程序技术方法进一步发展(70年代起) 1.4 编译过程简述一、编译步骤二、编译过程简述三、趟程(遍) 1.5 编译程序的生成一、编写编译程序的一般方法二、编译程序开发技术三、编译程序的自动生成,26,第一章 概 述,1.3 编译程序简史

12、一、汇编语言阶段(50年代初)1. 汇编符号出现2.宏指令出现3.子程序出现二、高级程序语言出现(1956年)编译程序开始三、编译程序理论开始确定(1960年)四、编译程序技术方法进一步发展(70年代起),27,1.3 编译程序简史编译程序的发展和计算机的发展紧密联系在一起,从1946年第一台电子计算机ENIAC出现,计算机经历了第一代电子管、第二代晶体管、第三代集成电路、第四代大规模集成电路计算机的发展,而编译程序技术和其他系统软件如:操作系统、数据库以及网络等也不断完善和发展,28,一、汇编语言阶段(50年代初)二、高级程序语言出现(1956年)编译程序开始三、编译程序理论开始确定(196

13、0年)四、编译程序技术方法进一步发展(70年代起),编译程序的发展分为以下四个阶段:,29,1.3 编译程序简史一、汇编语言阶段(50年代初)最初的手编程序即用机器指令编程序十分麻烦,为克服以上缺点,在50年代初提出用汇编符号代替机器指令的思想。,30,1.3 编译程序简史一、汇编语言阶段(50年代初)1. 汇编符号出现必须有对应的汇编程序,可以说汇编程序是编译的初级阶段,汇编符号仍然因难记、符号多等缺点被宏指令代替。,31,1.3 编译程序简史一、汇编语言阶段(50年代初)2.宏指令出现把一些完成特定功能的指令定义为宏指令,宏指令 可以看成机器指令一样,在写程序时直接使用它。,32,1.3

14、编译程序简史一、汇编语言阶段(50年代初)3.子程序出现为了避免大量重复工作,后来采用了子程序库方法。即把一些经常使用完成某些特定功能的公用程序独立出 来编成一段程序(称为子程序)将所有子程序集中在一起称为子程序库。在汇编语言阶段尽管采取了以上一些措施,但编程工作仍是一件十分繁琐乏味且容易出错的事情,这又促使了高级程序设计语言的出现。,33,第一章 概 述,1.3 编译程序简史一、汇编语言阶段(50年代初)二、高级程序语言出现(1956年)编译程序开始三、编译程序理论开始确定(1960年)四、编译程序技术方法进一步发展(70年代起),34,第一章 概 述,1.3 编译程序简史一、汇编语言阶段(

15、50年代初)二、高级程序语言出现(1956年)编译程序开始三、编译程序理论开始确定(1960年)四、编译程序技术方法进一步发展(70年代起),35,1.3 编译程序简史二、高级程序语言出现(1956年)编译程序开始从1954年美国开始研制高级程序设计语言,直到1956年首先在IBM704机上实现了FORTRAN编译程序。这个早期的编译程序共花了18个人年,由此可见,编译程序是一个大型软件。,36,第一章 概 述,1.3 编译程序简史一、汇编语言阶段(50年代初)二、高级程序语言出现(1956年)编译程序开始三、编译程序理论开始确定(1960年)四、编译程序技术方法进一步发展(70年代起),37,第一章 概 述,1.3 编译程序简史一、汇编语言阶段(50年代初)二、高级程序语言出现(1956年)编译程序开始三、编译程序理论开始确定(1960年)四、编译程序技术方法进一步发展(70年代起),

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 科普知识

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号