- 1、本文档共51页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
优化目标代码生成
第十章 优 化 第十一章 目标代码生成 DAG的应用 二、可从基本块的DAG中得到一些其它的优化信息: 在基本块外被定值并在基本块内被引用的所有标识符,就是作为叶子结点上标记的那些标识符; 在基本块内被定值且该值能在基本块外被引用的所有标识符,就是DAG各结点上的那些附加标识符。 对DAG 构造算法的进一步讨论 数组元素引用、指针和过程调用 问题一:变量值改变 解决方法:注销有关结点或标识符 问题二:返写次序问题 重写中间代码时DAG结点中结点间必须遵守的顺序: (1)对数组a任何元素的引用或赋值,都必须跟在原来位于其前面的对数组a任何元素的赋值之后。 (2)对数组a任何元素的赋值,都必须跟在原来位于其前面的对数组a任何元素的引用之后。 (3)对任何标识符的引用或赋值,都必须跟在原来位于其前面的任何过程调用或通过指针的间接赋值之后。 (4)任何过程调用或者通过指针的间接赋值,都必须跟在原来位于其前面的任何标识符的引用或赋值之后。 基本块优化的实现 对以下基本块构造DAG,并就以下两种情况写出优化后的四元式序列: 1、只有G、L、M在该基本块后被引用; 2、只有M在该基本块后被引用。 A:=B*C D:=B/C E:=A+D F:=E*2 G:=B*C H:=G*G F:=H*G L:=F M:=L 10.3 循环优化 代码优化的重点。 循环优化关键:找出程序中的循环 与循环有关的优化: 代码外提 强度削弱 删除归纳变量 代码外提 位于循环之内的表达式,如果其值不随着循环的重复执行而改变,该表达式被称为循环的不变运算。 代码外提的问题 如何识别循环中的不变运算? 把不变代码外提到什么地方? 什么条件下,不变代码可以外提? 。 不变代码的识别: 形如A:=B op C,其中 B和C是常数,或者 到达它们的B和C的定值点都在循环外 到达-定值:所谓变量A在某点d的定值到达另一点u,是指流图中从d有一通路到达u且该通路上没有A的其它定值。 不变代码外提的实现 在循环入口结点前设置一个前置结点; 将循环的不变运算外提到循环的前置结点中。 并非所有不变运算都可外提。 不变代码外提的条件: 第一种情况: 不变运算所在的结点是循环所有出口结点的必经结点,且 循环中不再有A的其它定值点,且 循环中A的引用点只有这个定值可达。 第二种情况: A在离开此循环后不再活跃,并且 循环中不再有A的其它定值点,且 循环中A的引用点只有这个定值可达。 查找循环L的不变运算的算法: (1) 依次查看L中个基本块的每个代码,如果它的每个运算对象或为常数,或者定值点在L外,则将次代码标记为“不变运算”。 (2)重复第(3)步直到没有新的代码被标记为“不变运算”为止。 (3)依次查看尚未被标记为“不变运算”的代码,如果它的两个两个运算对象或为常数,或定值点在L外,或只有一个到达定值点且该点上的代码已标记为“不变运算”,则把被查看的代码标记为“不变运算”。 代码外提算法: (1)求出循环的所有不变运算。 (2)对步骤1所求出的每一不变运算s:A:=B op C或A:=B ,检查它是否满足以下条件①或②: ①(i)s所在结点是L的所有出口结点的必经结点; (ii)A在L中其它地方未再定值; (iii)L中所有A的引用点只有s中A的定值才能到达。 ② A离开L后不再活跃,并且①的(ii)和(iii)成立。 (3)按步骤(1)所找出的不变运算的顺序,依次把符合条件(2)的条件①或②的不变运算s外提到L的前置结点中。 强度削弱 指利用一种执行较快的运算替代原运算。 常见情况: 将乘法运算转换为加法运算,例如数组下标变量地址的计算 将加法运算转换为更快的加法运算 强度削弱的条件 若循环中某表达式是 区域变量和区域常量(或常量)的线性表达式, 其中的区域变量是依循环线性变化的 则线性表达式中的乘(除)法运算可以削弱成加(减)法运算 一般情况下,循环中可削减计算强度的表达式是循环控制变量的线性表达式 删除归纳变量 循环归纳变量:在循环中,如果变量i的值随着循环的每次重复都固定地增加或者减少某个常量,则称i为循环的归纳变量。 基本归纳变量:i:=i addop C 用于自身递归定值,计算其它归纳变量 用来控制循环的进行 归纳变量:j:=C1*i addop C2 删除归纳变量 如果在一个循环中有多个归纳变量,归纳变量的个数往往可以减少,甚至减少到1个。 减少归纳变量的优化称为归纳变量的删除。 为进行归纳变量删除优化,必须找出归纳变量。 删除归纳变量是在强度削弱以后进行的。 强度削弱和删除归纳变量算法: (1)利用循环不变信息,找出循环中所有基本归纳变量。 (2)找出所有其它归纳变量A,并找出A与基本归纳变量X的同族
您可能关注的文档
- 互连设备.ppt
- 交互式计算机图形学系统.ppt
- 人工智能第三单元.ppt
- 人教版一年级上册数学第六单元整理和复习演示文稿ppt.ppt
- 互换定价(可用).ppt
- 人教版三年级数学上册第二单元复习.ppt
- 产业转移@.ppt
- 人教版五年级下册分数加减混合运算.ppt
- 人教版四年级下册数学《加法运算定律的运用例3》PPT课件.ppt
- 人教版三年级上册数学第二单元加减法的验算ppt课件.ppt
- 人教版生物必修3第3章第1节 植物生长素的发现---第二组.ppt
- 第三章 腐蚀控制技术.ppt
- 第八章 氧化还原平衡和氧化还原滴定法.pptx
- 第五章 口袋的缝制工艺(课件)-《服装缝制工艺》同步教学(中国纺织出版社).pptx
- 2.3图案缉线工艺 机缝基础任务(课件)- 《服装缝制工艺基础》同步教学(重庆大学版).pptx
- 第二章 西服裙的缝制工艺(课件)-高一《服装缝制工艺》(高教版 第4版).pptx
- 2.3手缝针法(课件)-《服装缝制工艺》同步教学(中国纺织出版社).pptx
- 3.4.2双面渔夫帽的缝制工艺(课件)-《服装缝制工艺》同步教学(中国纺织出版社).pptx
- 5.1裘皮与皮革(课件)-《服装材料》同步教学(中国纺织出版社).pptx
- 实践篇4.1.1装门襟拉链(课件)- 《服装缝制工艺基础》同步教学(重庆大学版).pptx
文档评论(0)