编译原理第8章代码优化.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
编译原理第8章代码优化

例题与习题解答 [例1]试对以下基本块B1应用DAG进行优化。 B1: 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 并就以下两种情况分别写出优化后的四元式序列: (1)假设G、L、M在基本块后面被引用; (2)假设只有L在基本块后被引用。 解:对于B1其DAG图: ** L中所有A的引用 点只有S中A的定值 才能到达; i=1 if uv goto B4 j= i B1 B2 B3 i=2 u=u+1 B4 k= i; v=v-1; if v=20 goto B5 B5 Ch8 代码优化 8.5 循环优化实施 二 . 强度削弱与删除归纳变量 强度削弱是将程序中强度高的运算使用强 度低的运算替代,以便使程序运行时间缩短。 一般情况 循环L中存在 I=I±C 且L中存在 T =K* I ±C 呈线性函数 求出递增(减)量K1,用±替代* T = T ± K1 (T是归纳变量 I是基本归纳变量) Ch8 代码优化 8.5 循环优化实施 定义8.8 (基本归纳变量/归纳变量) 如果循环中变量I仅有惟一的 I=I±C 形式 的赋值,其中C为循环不变量,则称I为循环中 基本归纳变量。 如果I是循环中一基本归纳变量,变量J在 循环中的定值总可化为I的同一线性函数的形 式:J= C1*I±C2,其中C1,C2是循环不变量 ,则称J是归纳变量,并称J与I同族。 Ch8 代码优化 8.5 循环优化实施 循环优化中强度削弱和删除归纳变量 有次序且相关 W1 (寻找归纳变量) W2 (强度削弱) W3 (删除归纳变量) Ch8 代码优化 8.5 循环优化实施 算法8.5 ( W1:查找归纳变量 ) 输入:带有到达—定值信息和循环不变运算信息的循 环L 输出:查找循环L中的一组归纳变量 方法: step1: 扫描L,找出所有基本归纳变量; (I=I±C) step2: 寻找L中只有一个定值的K(归纳变量),其 形式为: K=J*C; K=C*J; K=J/C; K=J ± C; K=C ± J ( 其 中 :C为 循 环 不 变 量 ;J为 基 本 归 纳 变 量 或 归 纳 变 量 ; ) Ch8 代码优化 8.5 循环优化实施 (1) 若J是基本归纳变量,K在J族中;{K、J同族} (2) 若J是归纳变量,J∈K族, K、J、I同族的附加 要求: a) 在L中对J的惟一定值和对K的定值间没有对I的 定值; b) L外没有J的定值可到达K; ** 找出一族归纳变量,可以变换计算归纳变量的 指令 (* +) Ch8 代码优化 8.5 循环优化实施 算法8.6 ( W2:强度削弱 ) 输入:带有到达—定值信息的L和归纳变量族 输出:进行强度削弱优化后的L 方法: 依次考察基本归纳变量I,对每个形如 J=C*I ±d的四元式: step1: 建立新变量S; step2: 用J=S代替原对J的定值 ; step3: 在L中每个I=I+n(n为常量)的四元式后加上 S=S+C*n ; step4: 保证S在L入口的初值为C*I+d ; Ch8 代码优化 8.5 循环优化实施 算法8.7 ( W3:删除归纳变量 ) 输入:带有到达—定值信息、循环不变运算信息和活 跃变量信息的L 输出:删除归纳变量优化后的L 方法: 考察每个仅用于计算同族中其它归纳变量和条 件分支的基本归纳变量I,取I族的一个归纳变量一个归 纳变量J,将含I的测试改为用J代替。 据du链信息 替代后的I不再引用时,从L中删去对I定值的语句 Ch8 代码优化 8.5 循环优化实施 例8.12 P243 — 例7.6 (自学) Ch8 代码优化 8.5 循环优化实施 一. 中间代码的选择 1. 便于生成目标代码; 2. 便于优化; 二. 确定实施各类优化的内容、次序和具体技术 1. 内容:适合实施的具体优化工作; 2. 次序:对提高优化效率,减少优化代价很重 要。 Ch8 代 码 优 化 实施优化的综合考虑 综合应用各类优化技术的共性应考虑的因素: 循环优化 全局优化 局部优化 会

文档评论(0)

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

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

1亿VIP精品文档

相关文档