- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
编译原理 1章
· 编译程序 高级语言 源程序 汇编语言或机器语言 目标程序 编译程序 · 汇编程序 汇编语言 源程序 机器语言 目标程序 汇编程序 ⒈ 编译方式下的翻译程序 1.1 程序的翻译——编译方式 ⑴ 在编译方式下,源程序的执行需要分阶段。 · 如果目标程序是机器语言程序, 则源程序的执行分 为两大阶段:编译阶段和运行阶段。 · 如果目标程序是汇编语言程序, 则源程序的执行分 为三大阶段:编译阶段、汇编阶段和运行阶段。 ⑵ 编译方式下,生成了目标代码,且可多次执行。 ⒉ 编译方式的特点 1.1 程序的翻译——编译方式 关于编译程序的几点说明 ⑴编译程序生成的目标程序不一定是机器语言的程序,也有可能 是汇编语言程序; ⑵编译程序与具体的机器和语言有关,即任何一个具体的编译 程序都是某一特定类型的计算机系统中关于某一特定语言的编译程序; ⑶对编译程序而言,源程序是输入数据,目标程序是输出结果。 完成解释工作的解释程序将按源程序中语句的动态顺序,逐句地进行分析解释,并立即予以执行。 1.1 程序设计语言与程序的翻译 1.1.4 解释方式 源程序解释执行的历程 计算机 解 释 程 序 源程序 (高级语言) 初始数据 计 算 结 果 在解释方式下,并不生成目标代码,而是直接执行源程序本身。这是编译方式与解释方式的根本区别。 1.2 编译程序的工作过程 · 词法分析 · 中间代码优化 · 语法分析 · 目标代码生成 · 语义分析和中间代码生成 依据语言词法规则,分析由字符组成的源程序,把它识别为一个一个具有独立意义的最小语法单位,即“单词”,并识别出与其相关的属性(如是标识符,是界限符,还是数,等等),再转换成长度上统一的标准形式(这种统一的标准形式既刻画了单词本身,又刻画了它所具有的属性,称为属性字),以供其它部分使用。 1.2 编译程序的工作过程——词法分析 依据语法规则,逐一分析词法分析时得到的单词,把单词串分解成各类语法单位,即确定它们是怎样组成说明和语句,以及说明和语句又是怎样组成程序的。分析时如发现有不合语法规则的地方,便将出错的位置及出错性质打印报告给程序员;如无语法错误,则用另一种中间形式给出正确的语法结构,供下一阶段分析使用。 1.2 编译程序的工作过程 ——语法分析 依据语言的语义规则对语法分析得到的语法结构进行静态语义检查(确定类型、类型和运算合法性检查、识别含义与相应的语义处理及其它一些静态语义检查),并用另一种内部形式表示出来,或者直接用目标语言表示出来。 凡在编译时可以确定的内容称为“静态”的;凡必须推迟到程序运行时才能确定的内容称为“动态”的。 1.2 编译程序的工作过程 ——语义分析 依据程序的等价变换规则,尽量压缩目标程序运行所需的时间和所占的存储空间,以提高目标程序的质量。 1.2 编译程序的工作过程 ——代码优化 如果语义分析时把源程序表示成中间形式而不是表示成目标指令,则由本部分完成从中间形式到目标指令的转换。如果语义分析时,已直接生成目标指令,则无需另外再做代码生成工作。 目标指令可能是绝对指令代码,或可重新定位的指令代码或汇编指令代码。该阶段的工作有赖于硬件系统结构和机器指令含义。 1.2 编译程序的工作过程 ——代码生成 登记源程序中出现的每个名字以及名字的各种属性。有些名字的属性需要在各个阶段才能填入。 1.2 编译程序的工作过程 ——表格管理 源程序中的错误有语法错误和语义错误两种。 语法错误:源程序中不符合语法(或词法)规则的错误,它们可在词法分析或语法分析时检测出来。 语义错误:源程序中不符合语义规则的错误,一般在语义分析时检测出来,有的语义错误要在运行时才能检测出来。通常包括:说明错误、作用域错误、类型不一致等等。 1.2 编译程序的工作过程 ——出错处理 1.3 编译程序的结构 1.4.1 遍(趟,趟程) 所谓一趟或一遍是指一个编译程序在编译时刻把源程序或源程序的等价物(中间程序)从头到尾扫描一遍并转换成另一紧邻的等价物的全过程。 根据编译程序在完成翻译任务的过程中需要对源程序或其中间等价物扫描的遍数,可以把编译程序分为单遍扫描的编译程序(只需扫描一遍)和多遍扫描的编译程序(需扫描多遍)。 1.4 编译程序的组织形式 单遍扫描的编译程序 前端主要由与源语言有关但与目标机器无关的那些部分组成,如词法分析、语法分析、语义分析与中间代码生成及部分代码优化工作。 后端主要包括编译中与目标机器有关的那些部分,如与目标机有关的代码优化和
有哪些信誉好的足球投注网站
文档评论(0)