中间代码概述教学课件.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
张长海、陈娟《程序设计基础》(第2版)高等教育出版社 张长海、陈娟《程序设计基础》(第2版)高等教育出版社 中间代码的功能 吉林大学计算机科学与技术学院 刘磊、郭德贵等《编译原理与实现技术》(第2版)高等教育出版社 * 表 处 理 错 误 处 理 目 标 代 码 生 成 中 间 代 码 优 化 中 间 代 码 生 成 语 义 分 析 语 法 分 析 词 法 分 析 目 标 程 序 源 程 序 C语言: f (xy) x+=15 ; else x-=15; 目标代码: 1010 1001 0001 0110 0000 0001 0011 1100 0001 1000 0000 0001 0111 1100 0000 0101 0010 1101 0001 0101 0000 000 1110 1010 0000 0011 0000 0101 0001 0101 0000 000 0101 0011 0001 1000 0000 0001 ………………….. 0000 0000 0000 0000 0000 0000 0000 0000 四元式中间代码: (,x,y,t1) (then,t1,-,-) (addi,x,15,t2) ; (:=,t2,-,x) (else,-,-,-) (subi,x,15,t3) ; (:=,t3,-,x) (ifend,-,-,-) 中间代码:是一种复杂性介于源程序语言和目标语言之间一种语言,中间代码与具体机器无关。 吉林大学计算机科学与技术学院 刘磊、郭德贵等《编译原理与实现技术》(第2版)高等教育出版社 * 快速编译程序可以把源语言程序(源代码)直接翻译成目标代码。 没有中间代码生成目标代码的额外开销,可避免重复性工作,从而减少编译器的体积。 使用中间代码的好处: 为使编译程序在逻辑结构上更为简洁,编译程序常常先把源代码生成中间代码,然后再由中间代码生成目标代码; 可以在中间代码一级进行优化工作使得目标代码的生成比较容易; 便于编译器的移植; 吉林大学计算机科学与技术学院 刘磊、郭德贵等《编译原理与实现技术》(第2版)高等教育出版社 * 编译器前端(Front End)和后端(Rear End) 前端(Front End): 由与源语言有关但与目标机无关的那些部分组成. 后端(Rear End): 由与源语言无关但与目标机有关些部分. 吉林大学计算机科学与技术学院 刘磊、郭德贵等《编译原理与实现技术》(第2版)高等教育出版社 * 目 标 代 码 生 成 中 间 代 码 优 化 中 间 代 码 生 成 语 义 分 析 语 法 分 析 词 法 分 析 目 标 程 序 源 程 序 前端 后端 吉林大学计算机科学与技术学院 刘磊、郭德贵等《编译原理与实现技术》(第2版)高等教育出版社 * 分析阶段 代码生成阶段 吉林大学计算机科学与技术学院 例:m种语言,在n种目标机上实现编译器. 方案1.不采用中间代码的的方法. S1 S2 S3 Sm ..... O1 O2 On ..... m种源语言 n种目标机 m×n个编译器 ..... 刘磊、郭德贵等《编译原理与实现技术》(第2版)高等教育出版社 * 吉林大学计算机科学与技术学院 例:m种语言,在n种目标机上实现编译器. 方案2.采用中间代码的方法. S1 S2 S3 Sm ..... O1 O2 On ..... m种源语言 n种目标机 m各前端+n个后端 中间语言 ..... ..... 刘磊、郭德贵等《编译原理与实现技术》(第2版)高等教育出版社 * 吉林大学计算机科学与技术学院 * 单单从字面上来说,看到“中间”二字,会让我们想到至少存在另外两种不同的代码,实际编译过程中,中间代码是一种复杂性介于是源语言代码和目标语言代码之间一种语言代码. 中间语言是一种简单的记号系统,它既能适用描述绝大多数高级程序设计语言,也能适合表示各种计算机硬件的结构,这样就容易实现各种高级语言都翻译成中间语言,以及把这种中间语言翻译成各种机器的目标语言。 * 采用中间代码策略:①将与源语言有关的工作都放到中间代码生成之前.②将与目标机相关的某些实现细节至于中间代码生成后,在目标代码生成阶段进行仔细处理;使得编译程序在逻辑结构上更为简洁。 中间代码的简洁结构使得在这一级别上进行源程序的优化处理较为方便。 * 编译前端通常包括词法分析、语法分析、语义分析、中间代码生成,与目标机无关的中间代码优化部分也可包含在前端,当然前端也包括相应部分的错误处理。 编译后端

文档评论(0)

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

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

1亿VIP精品文档

相关文档