- 1、本文档共37页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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
您可能关注的文档
- 成都理工大学商学院统计学课件第1章 统计学导论.ppt
- 成都理工大学商学院统计学课件第7章 方差分析.ppt
- 成都理工大学文法学院经济法学课件 第八章.ppt
- 成都理工大学文法学院经济法学课件 第二章.ppt
- 成都理工大学文法学院经济法学课件 第九章.ppt
- 成都理工大学文法学院经济法学课件 第六章.ppt
- 成都理工大学文法学院经济法学课件 第七章.ppt
- 成都理工大学文法学院经济法学课件 第三章.ppt
- 成都理工大学文法学院经济法学课件 第十二章.ppt
- 成都理工大学文法学院经济法学课件 第十六章.ppt
- 绿电2022年系列报告之一:业绩利空释放,改革推动业绩反转和确定成长.docx
- 化学化工行业数字化转型ERP项目企业信息化规划实施方案.pdf
- 【研报】三部门绿电交易政策解读:溢价等额冲抵补贴,绿电交易规模有望提升---国海证券.docx
- 中国债券市场的未来.pdf
- 绿电制绿氢:实现“双碳”目标的有力武器-华创证券.docx
- 【深度分析】浅析绿证、配额制和碳交易市场对电力行业影响-长城证券.docx
- 绿电:景气度+集中度+盈利性均提升,资源获取和运营管理是核心壁垒.docx
- 节电产业与绿电应用年度报告(2022年版)摘要版--节能协会.docx
- 2024年中国人工智能系列白皮书-智能系统工程.pdf
- 如何进行行业研究 ——以幼教产业为例.pdf
最近下载
- 2017-2023上海高考古文(记、序类)详解及解题指导(7篇)2.docx VIP
- 幼儿园论文 快乐轻松学投掷——中班体育活动中“适宜材料投放”探索与实践.doc
- 矿石运输施工组织计划.docx
- 测量系统线性分析数据表.xlsx VIP
- 征信详细版纸质个人信用报告2024年12月必威体育精装版版可编辑带水印模板.pdf
- 过敏性休克的急救与护理课件.ppt
- 第三单元 跨学科实践活动2 制作模型并展示科学家探索物质组成与结构的历程 课件(共25张PPT).pptx VIP
- 老年人心理健康关爱老年人.pptx
- 个人存在问题及不足.docx VIP
- 用于冻干的无甘油PCR试剂及其冻干方法.pdf VIP
文档评论(0)