第七单元代码优化.pptxVIP

  1. 1、本文档共40页,可阅读全部内容。
  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文档。上传文档
查看更多
第七单元代码优化

第七章 代码优化 7.1 优化概述 1 目的 提高代码质量,产生更高效(时、空)的代码。 2 原则 等价原则 有效原则 合算原则 7.1 优化概述 3 阶段 源代码 前端 中间代码 代码生成 目标代码 中间代码优化 目标代码优化 中间代码优化 7.1 优化概述 4 优化分类 ? 根据阶段分类 (1)与机器无关的优化 (2)与机器有关的优化 ? 根据优化涉及的范围分类 (1)局部优化 (2)循环优化 (3)全局优化 局部优化 基本块内的优化 7.1 优化概述 5 优化技术 ☆ 删除公共子表达式 ☆ 代码外提 ☆ 强度削弱 ☆ 变换循环控制条件 ☆ 合并已知量 ☆ 复写传播 ☆ 删除无用赋值 删除公共子表达式 合并已知量 删除无用赋值 局部优化 7.1 优化概述 6 本章重点 局部优化 相关技术 四元式序列基本块的划分 基本块的图形表示 基本块的 优化技术 删除公共子表达式 合并已知量 删除无用赋值 删除公共子表达式 在同一个基本块内,计算结果相同的表达式只计算一次,以后重复出现时直接引用结果。 (1) T1=4*i (2) T2=addr(A)-4 (3) T3=T2[T1] (4) T4=4*i (5) T5=addr(B)-4 (6) T6=T5[T4] … (1) T1=4*i (2) T2=addr(A)-4 (3) T3=T2[T1] (4) T4=T1 (5) T5=addr(B)-4 (6) T6=T5[T4] … 合并已知量 常数或能确定其值的已知量,在编译时直接计算出来,不等到运行时再计算。 (1) i=1 (2) T1=4*i (3) T2=addr(A)-4 (4) T3=T2[T1] (5) T4=T1 (6) T5=addr(B)-4 (7) T6=T5[T4] … (1) i=1 (2) T1=4 (3) T2=addr(A)-4 (4) T3=T2[T1] (5) T4=4 (6) T5=addr(B)-4 (7) T6=T5[T4] … 删除无用赋值 赋值以后,在程序其他地方不再引用,可以删掉。 (1) i=1 (2) T1=4 (3) T2=addr(A)-4 (4) T3=T2[T1] (5) T4=4 (6) T5=addr(B)-4 (7) T6=T5[T4] … (1) T1=4 (2) T2=addr(A)-4 (3) T3=T2[T1] (4) T4=4 (5) T5=addr(B)-4 (6) T6=T5[T4] … 7.2 局部优化 基本块 定义: 基本块是程序中一段顺序执行的语句序列。 只有一个入口语句、一个出口语句。 入口是第一个语句,出口是最后一个语句。 7.2.1 为四元式程序划分基本块 (1)找到入口语句; (2)找到出口语句; (3)构造基本块。 ? 程序的第一条语句 ? 能由条件转移语句和无条件转移语句到达的语句 ? 紧跟在条件转移语句后面的语句 ? 下一入口语句的前导语句 ? 转移语句本身 ? 停语句(halt)本身 ? 删去不属于任何基本块的语句。 例7.2 给以下四元式序列划分基本块,并作出程序流图。 (1) read C (2) A=0 (3) B=1 (4) L1: A=A+B (5) if B≥C goto L2 (6) B=B+1 (7) goto L1 (8) L2: write A (9) halt (1) read C (8) L2: write A (4) L1: A=A+B (6) B=B+1 (3) B=1 (5) if B≥C goto L2 (7) goto L1 (9) halt (1) read C (2) A=0 (3) B=1 (4) L1: A=A+B (5) if B≥C goto L2 (6) B=B+1 (7) goto L1 (8) L2: write A (9) halt 程序流图: Homework:(P160) 7.5 Homework 7.5 把以下程序段划分为基本块,并作出其程序流图。

文档评论(0)

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

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

1亿VIP精品文档

相关文档