数据流分析之Reaching Definition Analysis

目录

(1)什么是Reaching Definition?

 (2)什么是Reaching Definition Analysis?

(3)Reaching Definition Analysis有何用处?

(4)如何实现Reaching Definition Analysis?

- 信息通过指令时的传播规则

- 信息汇聚时的传播规则

- 信息传播规则的形式化表述

- 基于信息传播规则,求解可达定义集合


 

(1)什么是Reaching Definition?

假设变量v在程序点p处被定义(赋值),我们可以说,变量v在程序点p处的定义到达了程序点p',如果:

a. 程序点p和p'之间存在一条路径;

b. 变量v在上述路径中没有被重新定义(赋值);

示意图如下:

 (2)什么是Reaching Definition Analysis?

设p为某程序点,v = E为v的某定义语句:

RDA是,针对程序中的每个定义(p, v = E),分析出它可能到达的所有程序点(通常是一条指令的前后处)。

等价说法是,RDA是针对程序中的每个程序点(通常是一条指令的前后处),分析出可能到达此处的所有定义(p, v = E)。

可以看出,RDA属于may分析,即RDA分析出的结果在程序实际执行时不一定会发生。

(3)Reaching Definition Analysis有何用处?

用处很多, 举两个例子来说明:

a. 死代码去除。假设我们分析出变量v在程序点p处的定义(p, v)可能到达的程序点集合为{ p_0,p_1,...,p_k},而在这些程序点对应的指令处,变量v

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值