网站大量收购独家精品文档,联系QQ:2885784924

编译原理第八章 优化.ppt

  1. 1、本文档共22页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第 8 章??? 优化处理 8.2 ???常见的几种局部优化方法 8.3 局部优化算法探讨 ※ 基本块划分示例: 8.3.2 局部优化过程示例 ※ 优化的基本算法设计: 8.4 基于DAG的局部优化方法 (接上页) ※ 四元式序列的DAG表示示例: 8.4.2 基于DAG的局部优化算法 ※ 四元式序列的DAG表示示例: 练习题: 【习题8.1】解释下列词语: ⑴ 优化处理; ⑵ 优化的分类; ⑶ 基本块; 【习题8.2】回答下述问题: ⑴ 列举常用的局部优化方法; ⑵ 分别说明,DAG是怎样处理:常值表达式,公共表达式和删除无用赋值的。 【习题8.3】设有基本块上的语句序列: A=2*3+B/C; B=2*3+B/C; C=2*3+B/C; ⑴ 写出四元式序列,构造优化的 DAG 表示; ⑵ 根据优化的 DAG ,重组四元式。 【习题8.4】P306_1,2,3 第7章 习题解答1: 第7章 习题解答2: 第7章 习题解答3: 第7章 习题解答5: 第7章 习题解答6: 第7章 习题解答7: 谢谢收看! * * ⑴ 与机器无关的优化(在源代码或中间代码级上进行); 8.1 优化的分类 又分两种: ①全局优化— 针对整个源程序。 ②局部优化— 除全局优化外皆属此类。 ⑵ 与机器有关的优化(目标代码级上的优化): 8.1 优化的分类 8.2 常见的几种优化方法 8.3 局部优化算法探讨 8.4 基于DAG的局部优化方法 内容提要 包括: ① 寄存器分配的优化; ② 消除无用代码。 ※ ※ 优化处理是指产生更高效的目标代码所做的工作。 ⒈ 常值表达式节省(常数合并) 如:a=5+3;b=a+1; ……. 则可优化为 a=8;b=9; ⒉ 公共子表达式节省(删除多余运算) ⒊ 删除无用赋值 如:a=b+c;x=d-e;y=b;a=e-h/5; 则可优化为 x=d-e;y=b;a=e-h/5; a 未有应用!! 若:a=5+3;…;a=x…; a=a+1; 注 如:a=b*d+1;e=b*d-2; …… 则可优化为 t=b*d; a=t+1; e=t-2; 若:b=b*d+1; e=b*d-2; 注 则 a=b+c 为无用赋值! 5+3,a+1 皆为常值表达式! b*d是公共表达式! 则 b*d不是公共表达式! 则 a+1 不是常值表达式! ⒋ 不变表达式外提(循环优化之一) 即把循环不变运算,提到循环外。 ⒌ 消减运算强度(循环优化之二) 即把强度大的运算换算成强度小的运算。 如:i=1; while(i100){x=(k+a)/i;…;i++;} 则可优化为 i=1;t=k+a; while (i100){x=t/i;…;i++;} 循环不变表达式 如:i=1; while(i100){ t=4*i;b=a↑2;…;i++;} 则可优化为 i=1;t=4*i; while (t400){t=t+4; b=a*a;…;} t,i 线性关系 8.3.1 基本块划分算法 ※ 局部优化算法是以基本块为单位进行的,基本块也是目标代码生成的基本单位。 【定义】基本块是程序中一段顺序执行的语句序列,其中只有一个入口和一个出口。 1.找出基本块的入口语句,它们是: ⑴ 程序的第一个语句或 转向语句转移到的语句; ⑵ 紧跟在转向语句后面的语句。。 2.对每一入口语句,构造其所属的基本块: ⑴ 从该入口语句到另一入口语句之间的语句序列; ⑵ 从该入口语句到另一转移语句(或停止语句)之间 的语句序列; 【例8.1】设有源程序片段: ※以基本块为结点的程序流图,如下所示: 对应的四元式序列 x=1; a:r=x*5; if(x10){x=x+1;goto a;} r=0; ⑴ x=1 ⑷ r=t1 ⑸ t2=x10 ⑹ if(t2)_ ⑺ t3=x+1 ⑻ x=t3 ⑼ gt a ⑽ ie _ ⑵ lb a ⑶ t1=x*5 ⑾ r=0 X=1 ⑵lb a ⑶t1=x*5 ⑷r=t1 ⑸t2=x10 ⑹if(t2)_ ⑺t3=x+1 ⑻x=t3 ⑼ gt a ⑾ r=0 ⑽ ie _ B1 B2 B3 B4 四个基本块 true false 【例

文档评论(0)

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

文档来源于网络

1亿VIP精品文档

相关文档