- 博客(6)
- 收藏
- 关注
原创 数据流分析的存活变量分析(Live Variables Analysis)的算法实现
我们观察到,要是使用正向分析的方法并不能直接确定程序的某个节点v在该程序点是否应该存活。//这个减操作可以看成去除kill中有的元素,加操作就是并操作。表示方法:对于一个节点而言,某个变量的存活只有两种状态,故使用bool类型存储。由于不确定具体会走哪一条路径,所以我们认为只要有一条路径是存活的,那么v在程序点p是存活的。在一条路径上有使用变量v的地方,并且在使用前v没有被重定义,就认为v在程序点p是live的。此时y,z应该是存活的,而x由于进行了赋值操作,因此在前面的操作中已经名存实亡了。
2025-04-11 16:17:33
412
原创 数据流分析的Reaching Definitions(可达性分析)的算法以及其实现
在使用过这些变量的地方判断与虚拟变量的可达性以此来判断是否存在未定义的问题,这个例子我们就可以很直观的感觉到存在a,b,mod未定义,但是对于一些大型的项目而言就没有那么直观了,我们就可以使用这个算法去判断某条使用过变量的语句与该变量的虚拟定义的可达性判断是否存在未定义的情况。比如说D1和D4都是对于x进行赋值,那么D1和D4就要做容斥,则kill集合中就包含了D1,那么容斥后就是{D2,D4,D5};比如说我IN[s]={D1,D2},基础块的语句有{D4,D5},合并以后就是{D1,D2,D4,D5}
2025-04-07 15:39:33
494
原创 上海施工小学 (分治NTT)
我们将这些点从1到n标号,在初始时任意两个点对(i,j)之间都有一条无向边,当然,因为是无向边,所以(i,j)和(j,i)之间的边是同一条。那么可以知道假定不连通的连通区域至少有两块,我们分为包含第n个点的连通区域以及不包含第n个点的连通区域,假定数量分别为i 和n-i ,0<i<n;(不包含第n个点的图的区域有g(n-i)种连通情况,然后从n-1个点选出i-1个)记n个点的图的数量为g(n),最大边数有(n-1)*n/2条,故g(n)=若已知f(1),f(2),f(3).....f(n-1),求f(n)
2024-04-17 17:37:05
426
1
原创 扩展欧几里得
一般而言,要解决 ax+by=n 的整数解问题,n需要满足条件:n%gcd(a,b)=0;假设 n=k*gcd(a,b);当我们求出ax1+by1=gcd(a,b) 的特解以后 也就求出了a(x1*k)+b(y1*k)=k*gcd(a,b)的特解,为x=k*x1;即只需求出 ax1+by1=gcd(a,b)的解又知道 gcd(a,b)=gcd(b,a%b);我们构造一个新的函数:bx2+(a%b)y2=gcd(b,a%b);就可以得到一个等式 ax1+by1=bx2+(a%b)y2;
2022-05-11 19:51:11
182
2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人