网站大量收购闲置独家精品文档,联系QQ:2885784924

电子科技大学计算机科学与工程学院编译原理课件第7章 编译概述.ppt

电子科技大学计算机科学与工程学院编译原理课件第7章 编译概述.ppt

  1. 1、本文档共37页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第7章 编译概述 1. 什么是程序设计语言 1.1 语言 自然语言、人工语言、计算机语言(程序设计语言) 1.2 程序设计语言的产生和发展 人机通信、人机交流 机器语言 → 汇编语言 → 高级语言 1.3 程序设计语言的特点 机器语言:二进制、机器相关 汇编语言:助记符、机器相关 高级语言:接近自然语言、机器无关 1.4 低级语言与高级语言 低级语言:机器语言、汇编语言 高级语言:C、Pascal 、Java 、Ada等 机器语言实例 … 0001 10 100100 10 000001 01 100011 01 010010 01 10… 汇编语言实例 … MOV R2, id3 MUL R2, 100 MOV R1, id2 ADD R1, R2 MOV id1, R1 … 高级语言实例 C语言实例: … float aaa, bbb, ccc; aaa = bbb + ccc * 100; … Pascal语言实例: … var aaa, bbb, ccc: real; aaa := bbb + ccc * 100; … Ada语言实例: … a:INT_VECTOR; result:INTEGER; result := 0; for x in a’FIRST..a’LAST loop result := result + a(x); end loop; … 1.5 高级语言的特点 直观、自然、易理解 易读、易写、易维护、易交流 独立于机器,易于移植 2.什么是编译 2.1 翻译与翻译程序 将一种语言编写的程序转换成完全等效的另一种语言编写的程序称为翻译(Translate)。 翻译是由一个程序来实现的,该程序称为翻译程序(Translator)。 2.2 编译与编译程序 将高级语言程序翻译成低级语言程序称为编译(Compile)。 实现编译的翻译程序称为编译程序或编译器(Compiler)。 2.3 与“编译”相关的三种语言、三种程序 源语言、宿主语言、目标语言 源程序、编译程序、目标程序 其中,源语言是高级语言;目标语言是低级语言;宿主语言可以是任意语言。 2.4 为什么需要编译 程序员 使用高级语言编程 计算机硬件 只能识别机器语言(低级语言) 编译 高级语言 → 低级语言 3. 编译的步骤 逻辑上可以将编译过程分成两部分,即源程序的分析和目标程序的合成。具体可分为以下几个步骤: 1)词法分析 输入字符串,根据词法规则识别出单词符号(Token)。 2)语法分析 根据语法规则,将单词符号构成各类语法单位,并进行语法检查。 3)语义分析与中间代码生成 根据语义规则,进行初步编译,生成中间代码。 4)优化 对中间代码进行等价变换,使代码的效率更高。 5)目标代码生成 生成目标语言程序(本课程采用汇编语言,即最终生成的是一个汇编程序)。 说明 编译的每个步骤都需要进行“符号表管理”和“出错处理”等操作。 符号表管理 完成符号表的建立、查找、更新。 出错处理 发现、指出、限制。 编译实例 例1.一个C程序(片段)的编译过程 ... int aaa, bbb, ccc; ... aaa = bbb + ccc * 100; ... 第一步:词法分析 1.识别出说明语句中的三个变量,作为新的标识符(identifier)加入符号表。 2.识别赋值语句中的单词符号,生成单词符号串(Token String): id1 = id2 + id3 * 100 其中,id1、id2、id3都是标识符,分别代表变量aaa、bbb、ccc(标识符的各个属性可在符号表中查到)。 第二步:语法分析 1.进行语法的合法性检查 1)“标识符=表达式”是合法的赋值语句 2)“标识符”是合法的表达式 3)“数字”是合法的表达式 4)“表达式+表达式”是合法的表达式 5)“表达式*表达式”是合法的表达式 2.构造语法树 第三步:语义分析和中间代码生成 语义分析:语义的合法性检查,例如:类型检查、类型转换。 中间代码生成:生成语义等价,结构更简单的中间代码。 temp1 = 100 temp2 = id3 * temp1 temp3 = id2 + temp2 id1 = temp3 第四步:优化 代码的等价变换,取消多余的数据和操作,提高代码的“时空”效率。 temp1 = id3 * 100 id1 = id2 + temp1 第五步:目标代码生成 根据目标语言的规范,生成相应的汇编程序。关键点:1.变量地址(Address)的分配;2.寄存器(Register)的分配。 MOV R

文档评论(0)

ormition + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档