编译原理chapter10 -11(2016.06.27)讲解.pptVIP

  1. 1、本文档共43页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
但是,循环中的不变运算并不是在任何情况下都可以外提的;对循环L中的不变运算: S:A=B op C或A= op B或A=B,要求满足下述条件(A在离开循环L后仍是活跃的): (1) S所在的结点是循环L的所有出口结点的必经结点; (2) ?A在循环L中其它地方未再定值; (3) ?循环L中的所有A的引用点只有S中A的定值才能到达。 例 p288-289 图10.11-14。 Chapter11 目标代码生成 11.1 基本问题 11.2 目标机器模型 11.3 一个简单的代码生成器 *11.4 寄存器分配 *11.5 DAG的目标代码 *11.6 窥孔优化 编译前端 中间 代码 代码优化 中间 代码 代码生成器 目标程序 符号表 代码生成器的位置: 目标代码的形式: 1、已定位的可立即执行的机器语言代码; 2、可浮动的机器语言代码,需装配连接再执行; 3、汇编语言目标代码,需汇编再执行。 目标代码应具有高效性: 如何使生成的目标代码较短; 如何充分利用寄存器,减少内存访问。 基本问题 1.代码生成器的输入 2.目标程序 3.指令选择 4.寄存器分配 5.计算顺序选择 一个简单的代码生成器 1、依次将每条中间代码变换成等价的若干条目标代码; 2、基本块内考虑充分利用寄存器的问题。 即:基本块内计算出的变量值尽量保留在寄存器中, 直至寄存器另有用途或已到基本块的出口; 引用变量时尽量用其在寄存器中的值。 例 现有赋值语句: A:=(B+C)*D+E 其对应的中间码: T1:=B+C T2:=T1*D A:=T2+E 则前述中间码可翻译为: LD R, B ADD R, C ST R, T1 LD R, T1 MUL R, D ST R, T2 LD R, T2 ADD R, E ST R, A 若中间码 X:=Y+Z 可翻译为: LD R ,Y ADD R, Z ST R, X 如果临时变量在基本块外不用 LD R, B ADD R, C MUL R, D ADD R, E ST R, A 简化 必须知道T1已在寄存器中 必须知道T1在基本块外不用 为此,我们引进 “待用信息”、“寄存器描述数组”、 “变量地址描述数组”等数据结构,记录所需信息。 1.待用信息 目的: ①将块内还将引用的变量的值尽量保存在寄存器中; ②将块内不再引用的变量占用的寄存器尽早释放。 引入:待用信息及活跃信息(记入符号表)。 活跃信息: 还将被引用的变量记“活跃”; 不再被引用的变量记“非活跃”。 待用信息: 对活跃变量记录下一次引用该变量的语句号; 对非活跃变量记“非待用”。 第十二章 并行编译基础 并行计算机是近二十几年来发展迅速的一类计算机。并行编译系统已经成为了现代高性能计算机系统中一个重要的部分。并行程序设计主要有两种途径,即使用并行程序设计语言编写并行程序,或将串行程序并行化。因此,并行编译系统就是能够处理并行程序设计语言,能够实现串行程序并行化。具有并行优化能力的编译系统。 英特尔 OpenMP 允许编程人员通过编译器指令和 C/C++ 编译指令表达并行性。 Hadoop 是一个开源的可运行于大规模集群上的分布式并行编程框架 。 MPI并行程序设计,是一种消息传递编程模型。MPI (Message Passing Interface) 并行编译器的组成及任务 源代码 程序分析 程序优化 并行代码生成 向量机: 组织向量循环 寄存器分配 流水线调度 共享存储多机系统: 任务划分 处理机调度 同步 分布存储多机系统: 数据和计算分布 通信 同步 数据依赖与控制依赖关系分析 数据流分析 包括循环向量化与并行化在内的各种优化 并行语义识别,处理指令级并行调度 并行与分布计算技术是实现高性能计算的重要技术途径。高性能计算机技术是现代科学研究、工程技术开发和大规模数据处理的关键支撑技术。没有高性能计算机,大量复杂问题的计算和事务处理就无法在合理的时间内完成。 利用高性能计算机还可以解决一些仅靠理论及实验方法无法解决的问题,分析处理靠传统技术无法应付的海量数据,例如核爆炸模拟、宇宙的形成及演变过程研究、中长期天气预报、石油地质勘探、数字地球和大规

文档评论(0)

shuwkb + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档