第九章-独立于机器的优化课件.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
9.3 数据流分析的基础 9.3.4 数据流解的含义 MFP与MOP的联系 MFP访问块未必遵循次序 由各块的初值和迁移函数 的单调性保证结果一致 MFP较早地使用汇合运算 迭代算法的IN[B4] = f3(f1(vENTRY) ? f2(vENTRY)) 而MOP[B4] = (f3 ? f1) (vENTRY) ? (f3 ? f2) (vENTRY) 数据流分析框架具有分配性时,结果是一样的 MFP ? MOP ? IDEAL B1 ENTRY B4 B3 B2 9.4 常 量 传 播 9.4.1 常量传播框架的数据流值 单个变量的数据流值半格 变量的类型所允许的所有常量 值NAC表示不是常量 值UNDEF表示没有定义 程序中各变量的 半格的积 把程序中每个变量映射到 该半格上的一个“值” UNDEF NAC … ?3 ?2 ?1 0 1 2 3 … 9.4 常 量 传 播 9.4.2 常量传播框架的迁移函数 令fs是语句s的迁移函数,m? = fs(m),用m和m?之 间的联系来表达fs (m是变量到“值”的映射) (1) 如果s不是赋值语句,则fs是恒等函数 (2) 若s对变量x赋值,则对所有v ? x,m?(v) = m(v), 再看m?(x): 若s的右部是一个常量c,则m?(x) = c 若s的右部是y + z ? m?(x) = m(y) + m(z),若m(y)和m(z)都是常量值 ? m?(x) = NAC,若m(y)或m(z)是NAC ? m?(x) = UNDEF, 否则 9.4 常 量 传 播 9.4.3 常量传播框架的单调性 m(y) m(z) m?(x) UNDEF UNDEF UNDEF c2 UNDEF NAC NAC UNDEF UNDEF c1 c2 c1 + c2 NAC NAC UNDEF NAC NAC c2 NAC NAC NAC (1) 赋值语句的形式不 是x = y + z fs不改变m(x)的值, 或者改变成一个常量 在这些情况下,fs 肯定是单调的 9.4 常 量 传 播 9.4.3 常量传播框架的单调性 m(y) m(z) m?(x) UNDEF UNDEF UNDEF c2 UNDEF NAC NAC UNDEF UNDEF c1 c2 c1 + c2 NAC NAC UNDEF NAC NAC c2 NAC NAC NAC (1) 赋值语句的形式不 是x = y + z fs不改变m(x)的值, 或者改变成一个常量 在这些情况下,fs 肯定是单调的 (2) 赋值语句的形式是 x = y + z 见右边, fs单调 9.4 常 量 传 播 9.4.4 常量传播框架的非分配性 不管取什么路径,在块B3的出口, z的值是5 迭代算法在块B3的入口而 不是出口使用汇合运算 f3(f1(m0) ? f2(m0)) ? f3(f1(m0)) ? f3(f2(m0)) 不具有分配性 算法未能发现B3出口z是5, 这个结果虽不精确但安全 B1 EXIT z = x + y x = 2 y = 3 B3 B2 x = 3 y = 2 9.4 常 量 传 播 9.4.5 结果的解释 ENTRY块置初值UNDEF 其它块置初值UNDEF x在块B4入口是10 块B5的x引用可以用10代替 和执行路径B1 ? B3 ? B4 ? B5不符 若程序正确的话, 认为x在块B5入口的值 只能为10是合适的 if Q goto B2 B1 B2 B4 B3 x = 10 if Q? goto B5 B5 B7 B6 = x 9.5 部 分 冗 余 删 除 本节内容 冗余计算以公共子表达式的形式出现,或以循环不变表达式的形式出现 冗余可能只出现在一部分路径上 讨论最小化x + y这样表达式的计算次数的方法 策略是,一个计算尽量不做,除非它不得不做 首先讨论冗余的不同形式,以建立直观认识,然后描述广义的冗余删除问题,最后提出算法 算法涉及到求解多个正向或逆向的数据流问题 9.5 部 分 冗 余 删 除 9.5.1 冗余的根源 公共子表达式 B1 B2 B4 B3 b = 7 d

文档评论(0)

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

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

1亿VIP精品文档

相关文档