北京外国语大学《编译原理》课件-第1章 引言.pptxVIP

北京外国语大学《编译原理》课件-第1章 引言.pptx

  1. 1、本文档共66页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第1章引 言;第1章引 言;第1章引 言;第1章引 言;第1章引 言 1.通用程序设计语言 通用程序设计语言是继汇编语言之后发展起来的应用最广 的一类语言,如人们常用的FORTRAN、Pascal、C/C++、 Ada83/Ada95、Java等语言。这类语言的特征是:语言结构符合人类的思维特征,如直接使用表达式进行数学运算;具有很高 抽象程度,如引入过程与类等机制;程序设计中强调逻辑过程,即程序员要考虑事情的前因后果,不但要设计做什么,还要考 虑怎么做,如条件或循环的判断等。;第1章引 言;第1章引 言;第1章引 言;第1章引 言;第1章引 言 高级语言之间的翻译,一般被称为转换,如FORTRAN到Ada 的转换等,或者被称为预处理,如SQL到C/C++的预处理等。高级 语言可以直接翻译成机器语言,也可以翻译成汇编语言,这两个翻 译过程被称为编译。从汇编语言到机器语言的翻译被称为汇编。高级语言是与具体计算机无关的,而汇编语言和机器语言均是与计算机有关的,因此,若将一个汇编语言汇编为可在另一机器上运行的机器指令,则称为交叉汇编,而建立在交叉汇编基础之上的编译模式,如首先将L2编译成A2,再将A2汇编为M1,有时也被称为交叉 编译。上述这些翻译模式一般被认为是正向工程。在一些特定情况下需要逆向工程,如把机器语言翻译成汇编语言,或者把汇编语言翻译成高级语言,分别称它们为反汇编和反编译。值得一提的是, 反编译是一件十分困难的事情。承担这些语言之间翻译任务的软件,一般被称为某某程序或某某器,为简单起见,本教材统一采用后一 种方式,即将这些翻译软件称为转换器、编译器等。;第1章引 言;第1章引 言 上述语言之间的翻译虽然各不相同,但基本方法,特别是对源语言的分析方法是相同的。由于高级语言之间的转换和汇编语言到机器语言的翻译过程中,源程序和目标程序之间的结构变化不大,其处理方法相对编译器来讲一般比较简单,因此我们以编译器为例,讨论把高级语言中应用最广的通用程序设计语言翻译成汇编语言程序所涉及的基本原理、技术和方法。这些原理、技术和方法也同样适用于其他各类翻译器的构造,同时有些技术和方法也可以被用于其他软件设计。在后继讨论中,我们约定源程序是指通用程序设计语言程序,而目标程序是指汇编语言程序。;第1章引 言;第1章引 言 解释器采用另一种方式翻译源程序。它不像编译器那样, 把源程序的翻译和目标程序的运行分割开来,而是把翻译和运 行结合在一起进行,翻译一段源程序,紧接着就执行它。这种 方式被称为解释。在计算机应用中,凡是可以采用编译方式的 地方,几乎都可以采用解释的方式,图1.2(b)是一个解释器的工作模型。;第1章引 言;第1章引 言;第1章引 言;第1章引 言 解释器与编译器的主要区别在于:运行目标程序时的控制权在解释器而不在目标程序。因此,与编译器相比,解释器有以下两个优点: 具有较好的动态特性: 运行时,由于源程序也参与其中,因此数据对象的类型可以动态改变,并允许用户对源程序进行修改,且可提供较好的出错诊断,从而为用户提供了交互式的跟踪调试功能。 具有较好的可移植性: 解释器一般也是用某种程序设计语言编写的,因此,只要对解释器进行重新编译,就可以使解释器运行在不同的环境中。;第1章引 言 由于解释器的动态特性和可移植特性,在有些特定的应用中必须采用解释的方法。典型的例子是数据库系统中的动态查询语句和Java的字节代码。前者利用了解释器的动态特性,在程序运行时根据输入动态生成查询语句,然后解释执行。后者利用了解释器的可移植特性,可在任何机器上对字节代码进行解释执行,习惯上称之为Java虚拟机。 但是,由于解释器是把源程序的翻译和目标程序的运行过程结合在一起,因此,与编译器相比,它在运行时间和空间上的损失较大,运行效率低:;第1章引 言;第1章引 言 由于编译和解释的方法各有特点,因此,现有的一些编译系统既提供编译的方式,也提供解释的方式,或者是一种中和的方 式。例如在Java虚拟机上发展的一种新技术,称为compiling-just- in-time,它的基本思想是,当一段代码第一次运行时,首先对它进行编译,而在其后的运行中不再进行编译。这种方法特别适合 一段代码多次运行的情况,而对于大多数代码仅运行一次的情况 并不适用。 从翻译的角度来讲,两种方式所涉及的基本原理、方法与技术是相似的。;第1章引 言;第1章引 言 类概念的引入,为利用程序设计语言构造类型提供了真正的 支持,也是面向对象程序设计语言的重要特征之一。程序设计语 言提供的机制与程序设计的风格有着密切关系,以过程为基本抽 象的程序设计语言支持的是过程式的程序设计范型(paradigm),以类为基本抽象的程序设计语言支持的是面向对象的程序设计范 型,以ADT为基本抽象的程序设计

文档评论(0)

132****2812 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档