编译器中的数据流分析简要指南

控制流图中的数据流分析即确定程序中有关数据定义和使用的信息的分析。借助此分析, 可以完成优化。通常, 其过程是使用数据流分析来计算值。数据流属性表示可用于优化的信息。

基本术语–

  • 定义点:程序中包含一些定义的点。
  • 参照点:程序中包含对数据项引用的点。
  • 评价点:程序中包含表达评估的点。
编译器中的数据流分析1

数据流属性–

可用表达式–

表达式在程序点x iff到达x的路径上可用。表达式在其评估点可用。

如果操作数在使用前都没有被修改, 则表示表达式a + b可用。

示例–

编译器中的数据流分析2

优势–

它用于消除常见的子表达式。

达到定义–

如果存在从D到x的路径, 其中D不会被杀死, 即没有重新定义, 则定义D到达点x。

示例–

编译器中的数据流分析3

优势–

它用于恒定和可变传播。

实时变量–

如果从p到结束使用了变量, 则变量在重新定义之前就已存在, 否则将在p某个点处处于活动状态。

示例–

编译器中的数据流分析4

优势–

  1. 这对于寄存器分配很有用。
  2. 它用于消除无效代码。

忙碌的表情–

如果表达式的计算沿该路径存在, 并且该运算符的定义在沿路径的计算之前不存在, 则该表达式沿该路径处于繁忙状态。

优势–

它用于执行代码移动优化。


微信公众号
手机浏览(小程序)
0
分享到:
没有账号? 忘记密码?