




已阅读5页,还剩41页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
代码优化 代码优化的目标 提高最终目标代码的运行效率 性能 时间 运行的更快 空间 降低内存需求保持源程序的语义 2020 4 8 编译原理与技术 之代码优化 3 代码优化 续 全局数据流分析技术 2020 4 8 编译原理与技术 之代码优化 4 全局数据流分析 基本块 in b out b kill b gen b 到达基本块入口处的相关数据流信息 到达基本块出口处的相关数据流信息 基本块 产生 的相关数据流信息 基本块 注销 的相关数据流信息 2020 4 8 编译原理与技术 之代码优化 5 全局数据流分析 数据流的 方向 正向 向前 数据流 与控制流方向一致 out b 由in b 来计算 in b 则由b的所有前驱结点的out来决定 控制流 数据流 前驱1 前驱2 基本块b 表示数据流信息交汇 合流 处 2020 4 8 编译原理与技术 之代码优化 6 全局数据流分析 数据流的 方向 反向 向后 数据流 与控制流方向相逆 in b 由out b 来计算 out b 则由b的所有后继结点的in来决定 控制流 数据流 基本块b 后继1 后继2 表示数据流信息交汇 合流 处 2020 4 8 编译原理与技术 之代码优化 7 全局数据流分析 表1 数据流分析方程 2020 4 8 编译原理与技术 之代码优化 8 全局数据流方程求解 迭代计算 直至某先后两次迭代计算结果一样迭代次序 向前流 流图深度优先次序 向后流 流图深度优先次序的逆序 流图深度优先次序 对流图进行深度优先遍历 得到流图深度优先扩展树 对该树进行前序遍历时最后访问结点的逆序迭代初始计算 值 2020 4 8 编译原理与技术 之代码优化 9 e g 一个流图 前序遍历 1 2 3 4 6 7 8 10 8 9 8 7 6 4 5 4 3 2 1深度优先次序 1 2 3 4 5 6 7 8 9 10 2020 4 8 编译原理与技术 之代码优化 10 全局数据流方程求解 表2 常用的数据流分析 2020 4 8 编译原理与技术 之代码优化 11 到达 定值数据流分析 定值与引用d x y z 语句d是变量x的一个定值点u w x v 语句u是变量x的一个引用点变量x在d点的定值到达u点 流图中有路径d u 且该路径上没有x的其它 无二义 定值 2020 4 8 编译原理与技术 之代码优化 12 到达 定值数据流分析 解决的问题 定值 传播 数据流归属 任意路径 向前流的数据流分析 in b 到达基本块入口处定值集合 out b 到达基本块出口处定值集合 gen b 基本块产生且能到达基本块出口的定值集合 kill b 由基本块注销的定值集合 这些定值不能传播或到达到块出口 数据流应用 ud链 即引用 定值链 可以据此判断基本块内的某变量引用 其值来自何方 定值 如应用于循环不变式的寻找 2020 4 8 编译原理与技术 之代码优化 13 out dm x out dn x 前驱1 前驱2 ds s x dt x du x in b out b 控制流 2020 4 8 编译原理与技术 之代码优化 14 out dm x out dn x 前驱1 前驱2 ds s x dt x du x in b out b 英雄惜英雄 dm和dn相会在汇流点 共赴in b 2020 4 8 编译原理与技术 之代码优化 15 out dm x out dn x 前驱1 前驱2 ds s x dt x du x in b out b dm和dn 一路无险遇ds 2020 4 8 编译原理与技术 之代码优化 16 out dm x out dn x 前驱1 前驱2 ds s x dt x du x in b out b dm和dn 再走一程见dt 2020 4 8 编译原理与技术 之代码优化 17 out dm x out dn x 前驱1 前驱2 ds s x dt x du x in b out b dm和dn 我们被dt所 屏蔽 不知何时上了 注销 榜 dt 你们歇着吧 我要gogogo 2020 4 8 编译原理与技术 之代码优化 18 out dm x out dn x 前驱1 前驱2 ds s x dt x du x in b out b dt 等等 我咋也上榜了 唉 既生t 何生u du 数 流 人 还看 2020 4 8 编译原理与技术 之代码优化 19 out dm x out dn x 前驱1 前驱2 ds s x dt x du x in b out b du 顺利过关 嗯 要是没有我和dt的阻击 现在站在这里的就是dm和dn 只可惜了dt 2020 4 8 编译原理与技术 之代码优化 20 到达 定值数据流分析 d1 i m 1d2 j nd3 a u1 d4 i i 1d5 j j 1 d6 a u2 d7 i u3 b1 b2 b3 b4 gen b1 d1 d2 d3 kill b1 d4 d5 d6 d7 gen b2 d4 d5 kill b2 d1 d2 d7 gen b3 d6 kill b3 d3 gen b4 d7 kill b5 d1 d4 例1 求解到达 定值的数据流图 2020 4 8 编译原理与技术 之代码优化 21 迭代计算 计算次序 深度优先序 即b1 b2 b3 b4 初始值 forallb in b out b gen b 第一次迭代 in b1 b1无前驱结点out b1 gen b1 in b1 kill b1 gen b1 d1 d2 d3 in b2 out b1 out b4 d1 d2 d3 d7 d1 d2 d3 d7 out b2 gen b2 in b2 kill b2 d4 d5 d3 d3 d4 d5 in b3 out b2 d3 d4 d5 out b3 d6 d3 d4 d5 d3 d4 d5 d6 in b4 out b3 out b2 d3 d4 d5 d6 out b4 d7 d3 d4 d5 d6 d1 d4 d3 d5 d6 d7 2020 4 8 编译原理与技术 之代码优化 22 第二次迭代in b1 b1无前驱结点out b1 gen b1 in b1 kill b1 gen b1 d1 d2 d3 in b2 out b1 out b4 d1 d2 d3 d3 d5 d6 d7 d1 d2 d3 d5 d6 d7 out b2 gen b2 in b2 kill b2 d4 d5 d3 d5 d6 d3 d4 d5 d6 in b3 out b2 d3 d4 d5 d6 out b3 d6 d3 d4 d5 d6 d3 d4 d5 d6 in b4 out b3 out b2 d3 d4 d5 d6 out b4 d7 d3 d4 d5 d6 d1 d4 d3 d5 d6 d7 经过第二次迭代后 in b 和out b 不再变化 2020 4 8 编译原理与技术 之代码优化 23 ud链 考察流图中变量i j的引用 定值情况 在基本块b2中有相应的引用 d4 i i 1 i 1中的i在引用前无定值 该引用的ud链仅来自于in b2 中i的有关定值集合 即 d1 i m 1 d7 i u3 类似地 d5 j j 1中的j引用 定值链为 d2 j n d5 j j 1 如果某变量引用前有定值 则该引用的ud链仅包含该变量的最后定值 2020 4 8 编译原理与技术 之代码优化 24 活跃变量分析 活跃变量d x 语句d是变量x的定值点 从d点开始的某条路径上 有该x值的引用 则称x在 d点活跃u x 2020 4 8 编译原理与技术 之代码优化 25 活跃变量分析 解决问题 在基本块出口处变量的活跃情况数据流归属 任意路径 向后流数据流分析数据流应用 无用赋值的删除 出口非活跃变量 无需存储 寄存器剥夺 2020 4 8 编译原理与技术 之代码优化 26 2020 4 8 编译原理与技术 之代码优化 27 x y 原来这里也有我们的身影哦 2020 4 8 编译原理与技术 之代码优化 28 y 我走不动了 逆 流 行船 累啊 x 坚持就是胜利 2020 4 8 编译原理与技术 之代码优化 29 x 又觅 活 踪 2020 4 8 编译原理与技术 之代码优化 30 x 终于出头啦 2020 4 8 编译原理与技术 之代码优化 31 活跃变量分析 1 a 1 2 b 2 b1 3 c a b 4 d c a b2 8 b a b 9 e c a b5 5 d b d b3 6 d a b 7 e e 1 b4 10 a b d 11 b a d b6 2020 4 8 编译原理与技术 之代码优化 32 基本块出口活跃变量 迭代计算out b in s s succ b in b use b out b def b use b 基本块b中有引用且该引用前无定值的变量集合 def b 基本块b中有定值且该定值前无引用的变量集合 计算次序 结点深度优先序的逆序 向后流 b6 b5 b4 b3 b2 b1 2020 4 8 编译原理与技术 之代码优化 33 基本块出口活跃变量 各基本块use和def如下 use b1 def b1 a b use b2 a b def b2 c d use b3 b d def b3 use b4 a b e def b4 d use b5 a b c def b5 e use b6 b d def b6 a 初始值 allb in b out b6 出口块 2020 4 8 编译原理与技术 之代码优化 34 基本块出口活跃变量 第一次迭代计算 1 a 1 2 b 2 b1 3 c a b 4 d c a b2 8 b a b 9 e c a b5 5 d b d b3 6 d a b 7 e e 1 b4 10 a b d 11 b a d b6 b d 2020 4 8 编译原理与技术 之代码优化 35 基本块出口活跃变量 第一次迭代计算 1 a 1 2 b 2 b1 3 c a b 4 d c a b2 8 b a b 9 e c a b5 5 d b d b3 6 d a b 7 e e 1 b4 10 a b d 11 b a d b6 b d b d a b c d 2020 4 8 编译原理与技术 之代码优化 36 基本块出口活跃变量 第一次迭代计算 1 a 1 2 b 2 b1 3 c a b 4 d c a b2 8 b a b 9 e c a b5 5 d b d b3 6 d a b 7 e e 1 b4 10 a b d 11 b a d b6 b d b d a b c d a b e 2020 4 8 编译原理与技术 之代码优化 37 基本块出口活跃变量 第一次迭代计算 1 a 1 2 b 2 b1 3 c a b 4 d c a b2 8 b a b 9 e c a b5 5 d b d b3 6 d a b 7 e e 1 b4 10 a b d 11 b a d b6 b d b d a b c d a b e a b c d e a b c d e 2020 4 8 编译原理与技术 之代码优化 38 基本块出口活跃变量 第一次迭代计算 1 a 1 2 b 2 b1 3 c a b 4 d c a b2 8 b a b 9 e c a b5 5 d b d b3 6 d a b 7 e e 1 b4 10 a b d 11 b a d b6 b d b d a b c d a b e a b c d e a b c d e a b c d e a b e 2020 4 8 编译原理与技术 之代码优化 39 基本块出口活跃变量 第一次迭代计算 1 a 1 2 b 2 b1 3 c a b 4 d c a b2 8 b a b 9 e c a b5 5 d b d b3 6 d a b 7 e e 1 b4 10 a b d 11 b a d b6 b d b d a b c d a b e a b c d e a b c d e a b c d e a b e a b e e 2020 4 8 编译原理与技术 之代码优化 40 基本块出口活跃变量 第二次迭代计算 1 a 1 2 b 2 b1 3 c a b 4 d c a b2 8 b a b 9 e c a b5 5 d b d b3 6 d a b 7 e e 1 b4 10 a b d 11 b a d b6 b d b d a b c d a b e a b c d e a b c d e a b c d e a b e a b e e 2020 4 8 编译原理与技术 之代码优化 41 基本块出口活跃变量 第二次迭代计算 1 a 1 2 b 2 b1 3 c a b 4 d c a b2 8 b a b 9 e c a b5 5 d b d b3 6 d a b 7 e e 1 b4 10 a b d 11 b a d b6 b d a b d e a b c d a b e a b c d e a b c d e a b c d e a b e a b e e 2020 4 8 编译原理与技术 之代码优化 42 基本块出口活跃变量 第二次迭代计算 1 a 1 2 b 2 b1 3 c a b 4 d c a b2 8 b a b 9 e c a b5 5 d b d b3 6 d a b 7 e e 1 b4 10 a b d 11 b a d b6 b d a b d e a b c d a b c d e a b c e a b c d e a b c d e a b c d e a b e a b e e 2020 4 8 编译原理与技术 之代码优化 43 基本块出口活跃变量 第二次迭代计算 1 a 1 2 b 2 b1 3 c a b 4 d c a b2 8 b a b 9 e c a b5 5 d b d b3 6 d a b 7 e e 1 b4 10 a b d 11 b a d b6 b d a b d e a b c d a b c d e a b c e a b c d e a b c d e a b c d e a b e a b e e
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 统计师模拟试题及答案
- 2025辽宁葫芦岛市连山区选调教师22人备考练习试题及答案解析
- 2025湖北襄阳市中心医院招聘第二批急需专业技术人才17人考试参考试题及答案解析
- 2025云南昆明市西山区团结社区卫生服务中心劳务派遣人员招聘3人备考练习试题及答案解析
- 达州市投资有限公司及其下属子公司2025年公开招聘工作人员(9人)备考练习试题及答案解析
- 中医骨科查房记录模板范文大全
- 2025南铁易购公司中欧保税店招聘16人备考练习试题及答案解析
- 2025内蒙古鄂尔多斯伊金霍洛旗社会工作协会招聘项目工作人员3人备考练习题库及答案解析
- 演员招募协议范本
- 幼儿园规程试题及答案
- 2025北京平谷区初三二模数学试题及答案
- 2025年中级会计职称考试经济法冲刺试题及答案
- 乐器供销合同范本
- 2025年应急通信保障中心招聘笔试预测试题及答案
- 2025-2026学年苏少版(新疆专用2024)小学综合实践四年级上册《遇见草木染》教学设计
- 保安培训课件45张
- 成人肺功能检查技术进展及临床应用指南课件
- 2025年辽宁省中考生物学试卷真题附答案
- 2025-2030牛肉分销渠道冲突与供应链协同优化报告
- 《法律职业伦理(第3版)》全套教学课件
- 2025年执业医师考试全真试题及答案
评论
0/150
提交评论