本次笔记内容:
8-5 数据流分析
8-6 到达定值分析
8-7 到达定值方程的计算
本节课幻灯片,见于我的 GitHub 仓库:第17讲 代码优化_2.pdf
文章目录
数据流分析
数据流分析(data-flow analysis)
数据流分析:一组用来获取程序执行路径上的数据流信息的技术。
数据流分析应用:
- 到达-定值分析(Reaching-Definition Analysis)
- 活跃变量分析(Live-Variable Analysis)
- 可用表达式分析(Available-Expression Analysis)
在每一种数据流分析应用中,都会把每个程序点
和一个数据流值
关联起来。
数据流分析模式
语句的数据流模式
- I N [ s ] IN[s] IN[s]:语句s之前的数据流值
- O U T [ s ] OUT[s] OUT[s]: 语句s之后的数据流值
- f s f_s fs:语句s的传递函数(transfer function)
-
- 一个赋值语句s之前和之后的数据流值的关系
-
- 传递函数的两种风格
-
-
- 信息沿执行路径前向传播(前向数据流问题)
O U T [ s ] = f s ( I N [ s ] ) OUT[s] = f_s(IN[s]) OUT[s]=fs(IN[s])
- 信息沿执行路径前向传播(前向数据流问题)
-
-
-
- 信息沿执行路径逆向传播(逆向数据流问题)
I N [ s ] = f s ( O U T [ s ] ) IN[s] = f_s(OUT[s]) IN[s]=fs(OUT[s])
- 信息沿执行路径逆向传播(逆向数据流问题)
-
- 基本块中相邻两个语句之间的数据流值的关系
-
- 设基本块B由语句 s 1 , s 2 , … , s n s_1, s_2, … , s_n s1,s2,…,sn顺序组成,则
I N
- 设基本块B由语句 s 1 , s 2 , … , s n s_1, s_2, … , s_n s1,s2,…,sn顺序组成,则