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

[工学]编译原理第10章.ppt

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

* 基本块的DAG构造举例 p283~284 原代码 (1)T0:=3.14 (2)T1:=2*T0 (3)T2:=R+r (4)A:=T1*T2 (5)B:=A (6)T3:=2*T0 (7)T4:=R+r (8)T5:=T3*T4 (9)T6:=R-r (10)B:=T5*T6 对应表 编号 标记 左 右 附加 标记 DAG构造过程 n1 3.14 T0 1 3.14 T0 n2 2 n2 6.28 T1 2 6.28 T1 n3 R0 3 R0 n4 r0 4 r0 n5 + T2 5 + 3 4 T2 n6 * A 6 * 2 5 A ,B ,B n7 2 ,T3 ,T3 ,T4 ,T4 ,T5 ,T5 n7 - T6 7 - 3 4 T6 n8 * B 删除 其它B 8 * 6 7 B 合并已知量 删除多余运算 删除无用赋值 复写传播 A=6.28*T2 * 利用DAG优化举例 p283~284 n1 3.14 T0 n2 6.28 T1 n3 R0 n4 r0 n5 + T2 n6 * A ,T3 ,T4 ,T5 n7 - T6 n8 * B 编号 标记 左 右 附加 标记 1 3.14 T0 2 6.28 T1 3 R0 4 r0 5 + 3 4 T2 6 * 2 5 A ,T3 ,T4 ,T5 7 - 3 4 T6 8 * 6 7 B 假设所有临时变量 块外无用只保留A,B 进一步优化代码 (1)S1:=R+r (2)A:=6.28*S1 (3)S2:=R-r (4)B:=A*S2 重建优化代码 (1)T0:=3.14 (2)T1:=6.28 (3)T3:=T1 (4)T2:=R+r (5)T4:=T2 (6)A:=6.28*T2 (7)T5:=A (8)T6:=R-r (9)B:=A*T6 删除无用赋值 重排代码 换名T2-S1 T6-S2 * 基本块的DAG构造课堂练习 原代码 (1)T1:=A*B (2)T2:=3/2 (3)T3:=T1-T2 (4)X:=T3 (5)C:=2 (6)T4:=A*B (7)T5:=18+C (8)T6:=T4*T5 (9)Y:=T6 请给出DAG构造过程 n1 A0 n2 B0 n3 * T1 合并已知量 n4 1.5 T2 n5 - T3 ,X n6 2 C ,T4 合并已知量 n7 20 T5 n8 * T6 ,Y * 利用DAG优化课堂练习 - n1 A0 n2 B0 n3 * T1 n4 1.5 T2 n5 T3 ,X n6 2 C ,T4 n7 20 T5 n8 * T6 ,Y 请给出重建代码 √ √ √ (1)T1:=A*B (2)T4:=T1 √ (3)T2:=1.5 √ (4)T3:=T1-1.5 (5)X:=T3 √ (6)C:=2 √ (7)T5:=20 √ (8)T6:=T1*20 (9)Y:=T6 假设所有临时变量 和C块外无用 请给出进一步优化代码 仅保留与X,Y相关内容 (1)T1:=A*B (2)X:=T1-1.5 (3)Y:=T1*20 * 利用DAG可实现的优化 p285 构造DAG时实现的优化 合并已知量 删除无用赋值 删除多余运算 复写传播 从构造出的DAG中可得到的优化信息 在基本块外被定值并在基本块内被引用的所有标识 符就是作为叶子结点上的那些标识符 在基本块内被定值且该值能在基本块后面被引用的 所有标识符,就是DAG各结点上的那些附加标识符 利用上述信息,可以进一步优化(删除无用赋值) 例如 某结点上无附加标记或附加标记在块外无用, 且无前驱,则不生成对计算该结点值的代码 * 10.3 循环优化 p287 代码外提 强度削弱 删除归纳变量 * 作业:306 3 B1 1.构造下面基本块DAG图。(中国科技) D:=B*C E:=A-B B:=B*C A:=E-D 作业 * copyright / * 陕西理工学院 计算机系 《编译原理》 * * 第十章 优 化 10.1 概述 10.2 局部优化 10.3 循环优化 10.4 数据流分析(不介绍) * 什么是代码优化 p272 含义 是指对程序进行各种等价变换,使得从变换 后的程序出发,能生成更有效的目标代码 代码优化器的地位和结构 优化可在编译的各个阶段进行 最主要的一类优化是在目标代码生成之前, 对语义分析后的中间代码进行 编译前端 代码优化器 代码产生 控制流分析 数据流分析 代码变换 * 10.1 概述 优化的目的和原则 p272 优化目的 产生更高效的目标代码 合理利用计算机资源 优化原则 等价 不改变程序的运行结果 高效 运行

文档评论(0)

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

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

1亿VIP精品文档

相关文档