- 1、本文档共32页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第一章 编译程序及其设计概述 编译程序总体结构 编译程序的实现方法 1.1 解释系统的功能分析 程序的解释执行 如:BASIC、Prolog,问题:效率低下 1.1 编译系统的功能分析 程序的编译执行 1.1 编译系统的功能分析 程序分析 词法、语法、语义 分析综合 语句的翻译、代码生成 标识符: 1. 词法分析 例: main( ) { printf(“hello”); } 结果 IDN main ‘(’ ‘)’ ‘{’ IDN printf ‘(’ STR hello ‘)’ ‘;’ ‘}’ 1、词法分析 词法分析由词法分析器完成(Lexical Analyzer),词法分析器又叫做扫描器(Scanner) 词法分析器从左(前)到右(后)扫描源程序——一个字符串,并将该字符串转换成单词(符号—Token)串;同时要:查词法错误,进行标识符登记——符号表管理。 输入:字符串 输出:(种别码,属性值)——序对 属性值——token的机内表示 2、语法分析 语法分析由语法分析器(Syntax Analyzer)完成,语法分析器又叫Parser。 功能:Parser实现“组词成句”,构造分析树,指出语法错误,指导翻译 输入:Token序列 输出:语法成分 2. 语法分析 语句 printf(“hello”); 表达式 ; 函数调用 标识符 ( 表达式 ) 常数 字符串 3. 语义分析 功能:分析由语法分析器给出的语法单位的语义 获取标识符的属性:类型、作用域等 语义检查:运算的合法性、取值范围等 子程序的静态绑定:代码的相对地址 变量的静态绑定:数据的相对地址 4. 生成中间代码 中间代码(intermediate Code) : 波兰表示(Polish Notation)、逆(Anti-)波兰表示、三元式、三元组、四元组(三地址码)、语法树 例:id1+id2*id3 4. 生成中间代码 中间代码的特点 简单规范 机器无关 易于优化与转换 例(三地址代码) x := s (赋值) param x (参数) call f (函数调用) 注释 s 是 hello 的地址 f 是函数 printf 的地址 5. 代码优化 对中间代码的优化处理:对代码进行等价变换以求提高执行效率——提高运行速度和节省存储空间 与机器无关的优化 与机器有关的优化 与机器无关的优化 局部优化 常数运算在编译期间完成:8+9*4 公共子表达式的提取:基本块内 循环优化 强度削减 代码外提 与机器有关的优化 寄存器的利用 将常用量放入寄存器,以减少访问内存的次数 存储策略 根据算法访存的要求安排:Cache、并行存储体系——减少访问冲突 任务划分 按运行的算法即体系结构,划分子任务(MPMD) 6. 目标代码生成 将中间代码转换成目标机上的机器指令代码或汇编代码 7、表格管理 管理各种符号表(常数、标号、变量、过程、结构……),查、填(登记、查找)源程序中出现的符号和编译程序生成的符号,为编译的各个阶段提供信息。 辅助语法检查、语义检查 完成静态绑定、管理编译过程 Hash表、链表等各种查、填表技术 8、错误处理 进行各种错误的检查、报告、纠正,以及相应的续编译处理(如:错误的定位与局部化) 词法:拼写…… 语法:语句结构、表达式结构…… 语义:类型不匹配…… 模块分类 分析:词法分析、语法分析、语义分析 综合:中间代码生成、代码优化、目标代码生成 辅助:符号表管理、出错处理 8项功能对应8个模块 编译的遍(Pass) 根据系统资源的状况、运行目标的要求……等,可以将一个编译程序设计成多遍扫描的形式,在每一遍扫描中,完成不同的任务。 1.3 编译技术的应用 把复杂数据看作一条语句 数据格式的分析 利用词法分析、语法分析方法 数据处理的框架 基于语法制导的语义处理框架 编译技术可以用于各种复杂数据的分析处理 例1-1(1/1) DOS 命令 date 的输出格式 例:9-2-1993、09-03-1993、9-03-93 语法 date → month - day - year 词法 month → DIGIT DIGIT | DIGIT day → DIGIT DIGIT | DIGIT year → DIGIT DIGIT | DIGII DIGIT DIGIT DIGIT 例1-1 语义 year(年)、month(月)、day(日) 语义约束条件 0 month.value 13 0 day.value 32,31,30 0 year.value 10000 1.4 编译程序的实现方法 设计目标 目标程序小,执行
您可能关注的文档
- 春、秋季武湖浮游动物群落特征及其与环境因子的关系.pdf
- 此演示文稿中的一些控件无法激活。这些控件可能未在此计算机上注册的简易解决方法.doc
- 氮磷资料.doc
- 淡水珍珠养殖技术.pdf
- 淡水鱼类急性中毒诊断方法.doc
- 磁化水对凝石性能影响初探.pdf
- 磁性纳米生物材料研究进展及其应用.pdf
- 第01章 基因与基因工程概论.doc
- 第05章 中国技术贸易(讲义).ppt
- 第0章 大学物理绪论.ppt
- 2023-2024学年广东省深圳市龙岗区高二(上)期末物理试卷(含答案).pdf
- 2023-2024学年贵州省贵阳市普通中学高一(下)期末物理试卷(含答案).pdf
- 21.《大自然的声音》课件(共45张PPT).pptx
- 2023年江西省吉安市吉安县小升初数学试卷(含答案).pdf
- 2024-2025学年广东省清远市九校联考高一(上)期中物理试卷(含答案).pdf
- 广东省珠海市六校联考2024-2025学年高二上学期11月期中考试语文试题.pdf
- 2024-2025学年语文六年级上册第4单元-单元素养测试(含答案).pdf
- 2024-2025学年重庆八中高三(上)月考物理试卷(10月份)(含答案).pdf
- 安徽省安庆市潜山市北片学校联考2024-2025学年七年级上学期期中生物学试题(含答案).pdf
- 贵州省部分校2024-2025学年九年级上学期期中联考数学试题(含答案).pdf
文档评论(0)