
静态分析
ForBestSelf
后端开发程序猿养成中
展开
-
数据流分析之WorkList Algorithm
(1)如何求解数据流方程?不论是Reaching Definition Analysis中对可达定义集合的求解,还是Liveness Analysis中对活跃变量集合的求解,本质上都是在解方程。以RDA举例,其数据流方程如下:可认为每个指令都对应方程中的两个变量,即IN(p)和OUT(p)。为了减少变量个数,把(1)式带入(2)式,以去掉IN(p):此时方程中的变量...原创 2020-04-08 22:48:55 · 1375 阅读 · 0 评论 -
数据流分析之Liveness Analysis
(1)什么是Liveness?我们说,变量v在程序点p处是活跃的,如果:a. 变量v在程序点p'处被使用,且程序点p和p'之间存在一条路径;b. 变量v在上述路径中没有被定义过;示意图如下:(2)什么是Liveness Analysis?LA是针对程序中的每个程序点(通常是一条指令的前后处),分析出活跃于此处的所有变量。 从Liveness的定义可看...原创 2020-04-08 14:37:46 · 1480 阅读 · 0 评论 -
数据流分析之Reaching Definition Analysis
(1)什么是Reaching Definition?假设变量v在程序点p处被定义(赋值),我们可以说,变量v在程序点p处的定义到达了程序点p',如果:a. 程序点p和p'之间存在一条路径;b. 变量v在上述路径中没有被重新定义(赋值);示意图如下:(2)什么是Reaching Definition Analysis?设p为某程序点,v = E为v的某定义语句:...原创 2020-04-07 20:25:39 · 1391 阅读 · 0 评论