- 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.2 翻译语言 翻译程序将高级语言编写的程序翻译成机器语言程序。翻译有两种方式,一种是编译方式,另一种是解释方式。 1.2 为什么要有编译程序 编译程序有以下五个特点: 模块性 静态解释和动态解释 机器无关性 语言标准化 程序语言特性 1.3 编译程序的工作过程 编译程序工作过程 1.3.1 分析 词法分析:词法分析是编译过程的基础,其任务是扫描源程序,根据语言的词法规则,分解和识别出每个单词,构造符号表、常数表以及将源程序转换成中间语言程序。 语法分析:语法分析是在词法分析的基础上进行,其主要任务是根据语言的语法规则检查源程序是否合乎语法。 语义分析:语义分析进一步检查合法程序结构的语义正确性,其目的是保证标识符和常数的正确使用,把必要的信息收集、保存到符号表或中间代码程序中,并进行相应的处理。 1.3.2 综合 存贮分配 :主要任务是为程序和数据分配运行时的存贮单元。 中间代码优化 :中间代码优化通过调整和改变中间代码中某些操作的次序,以最终产生更加高效的目标代码(目标程序)。 目标代码生成 :这是编译程序的最后阶段。如果编译程序采用了中间代码,那么,目标代码生成阶段的任务则是将中间代码或优化之后的中间代码转换为等价的目标代码,即机器指令或汇编指令。 1.4 编译程序的结构 编译程序结构 1.4 编译程序的结构 编译过程还可采用“分遍”的形式,即编译过程可以由一遍或多遍编译程序来完成。 对于源程序或中间代码程序,从头至尾扫描一次并完成所规定的工作称为一遍。在一遍中,可以完成一个或相连几个逻辑步骤的工作。例如,可以把词法分析作为第一遍;语法分析和语义分析作为第二遍;代码优化和存储分配作为第三遍;代码生成作为第四遍:从而构成一个四遍扫描的编译程序。 1.5 编译程序的组织方式 如果宿主机的内存空间有限,则需要外存辅助,这种情况下,编译程序可以按照下面的方式组织。 首先在内存中开辟三个覆盖区(共享区):一个存放最大的Comp1;一个存放输入对象(扫描对象);一个存放加工结果(部分处理结果)。 然后在外存开辟编译程序的暂存区和输入对象/加工结果的存放区。并且由“编译总控程序”负责控制和调度编译程序的各遍。 1.6 编译程序的其他有关技术 编译程序的自展技术 编译程序的移植 编译程序的自动化 程序的可再入性 编译程序的自展技术 按照自展技术,需要把源语言L分解成一个核心部分L0与扩充部分L1,L2,…,Ln。 分解源语言之后,先用汇编语言或机器语言编写L0的编译程序,然后再用L0编写L1的编译程序,用Li编写Li+1的编译程序(i=1,2,…,n–1),像滚雪球一样,愈滚愈大,最后得到源语言L的编译程序。 编译程序的移植 编译程序可以通过移植得到,即可以将一个机器(宿主机)上的一个具有自编译性的高级语言编译程序搬迁到另一个机器(目标机)上。而可移植性则是对这种搬迁过程中难易过程的一种度量。如果工作量不大,则可称该程序是可移植的;若移植一个程序的开销远远低于最初研制该程序的开销,那么这种程序就是高度可移植的。 编译程序的自动化 在编译程序自动化进程中,开发早且应用广泛的是词法分析程序生成器和语法分析程序生成器。 词法分析程序生成器:LEX(详见第13章)。它输入的是正规表达式,输出的是词法分析程序。LEX的基本思想是由正规表达式构造有穷自动机。 语法分析程序生成器:基于LALR(1)文法的YACC(Yet Another Compiler Compiler)(详见第14章)。它接受LALR(1)文法,生成一个相应的LALR(1)分析表以及一个LALR(1)分析器,而且,YACC生成的语法分析器可以和扫描器连接。 程序的可再入性 如果一个程序具有下面的特性,我们可以称它是可再入的:当这个程序正在执行时,可以随时中断它的执行进程,也可随时从中断点恢复其原来的执行进程;而且可以再中断时间里,又从该程序的头上开始一个新的执行进程。 程序的可再入性 要使一个程序具有可再入性,必需满足以
您可能关注的文档
最近下载
- Photoshop2020平面设计实例教程全套完整教学课件.pptx
- 2025年重庆市中考语文试卷真题(含标准答案) 原卷.pdf
- 30题保险理赔岗位常见面试问题含HR问题考察点及参考回答.docx VIP
- 2023年成人高考高起专《数学》(理科)真题及答案.pdf VIP
- 2025年中国红十字会救护员培训理论考试试题及答案.docx VIP
- 苏教版九年级数学上册《一元二次方程的解法(2)》课件.ppt VIP
- 航空煤油安全技术说明书.pdf VIP
- 四年级上册数学人教版预习卡.pdf VIP
- 第一单元 传统工艺制作---劳动预备 课件(共两课时40张PPT).pptx VIP
- 2025年秋人教版英语八年级上册Unit 1 Happy Holiday 教案教学设计.docx VIP
文档评论(0)