我想从C源代码生成程序依赖图(PDG).我找到了解释它是怎么做的论文,但都使用了商业CodeSurfer工具.
有没有可以完成这项工作的免费工具或开源项目?
我想在linux上的磁盘上存储一些数据.我希望这些数据存储在物理磁盘中的连续磁盘块中.如果为了将此数据写入普通文件,可能该文件占用的块在物理磁盘中不连续.有办法做这个工作吗?
我使用Frama-C工具生成该程序的依赖图(main.c).
#include<stdio.h>
int main()
{
int n,i,m,j;
while(scanf("%d",&n)!=EOF)
{
m=n;
for(i=n-1;i>=1;i--)
{
m=m*i;
while(m%10==0)
{
m=m/10;
}
m=m%10000;
}
m=m%10;
printf("%5d -> %d\n",n,m);
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
命令是:
frama-c -pdg -dot-pdg main main.c
dot -Tpdf main.main.dot -o main.pdf
Run Code Online (Sandbox Code Playgroud)
结果是
我的问题是为什么语句"m = m*i;","m = m%10000"不映射到节点.结果似乎不正确,因为代码中有三个循环.