要做一个根据C代码自动生成函数调用关系图的小程序

要做一个根据C代码自动生成函数调用关系图的小程序,第1张

1,你可以尝试一下llvm,苹果公司支持的开源编译器项目,它可以将程序解悉坦此析成基本块的关系图;首先llvm做的事情要比你要求的多很多,程序会被解释成一个模块,每个模块包含若干个函数function,function内部将代码分睁迅成一个一个基本块,基本块是一个编译原理的术语,你可以查一下相关定义。其次,高级语言程序要被解释成一种中间表达,这种中间表达可以描述一种图叫做有向无环图,你所需要的调用关系图是这个有向无环图中的一个子图。

2,自己做的话首先你要了解有向无环信缓图(DAG)的数据结构,比较适合描述函数调用关系图,其次要将函数抽象成DAG上的一个结点,这个结点至少包含以下信息,调用这个函数的母函数指针集合,这个函数调用的函数指针集合,当前函数的名称。

使用matlab里面的rand函数可以生成随机数函数。闷搭岁

rand函数的用法 :

(1)命令:rand(N),rand(M,N)等

(2)对于rand(N),通过help rand得到的解释是:

R = rand(N) returns an N-by-N matrix containing pseudorandom values drawn from the standard uniform distribution on the open interval(0,1).

(3)即rand(N)是生成一个符合标准均匀分布的矩阵,其值位于开区间0~1。

(4)由概率论知识可知,当一个序列服从(0,1)区间的标准均匀分布时,其期望为0.5,方差为1/12(0.08333)。

可以用程序检验一下:

扩展资料:

matlab函数randn:产生枝租均值为0,方差 σ^2 = 1,标准差σ = 1的正态蚂睁分布的随机数或矩阵的函数。

用法:Y = randn(n),返回一个n*n的随机项的矩阵。如果n不是个数量,将返回错误信息。

Y = randn(m,n) 或 Y = randn([m n]),返回一个m*n的随机项矩阵。

Y = randn(m,n,p,...) 或 Y = randn([m n p...]),产生随机数组(感觉就是三维数组,请看如下例子)。

1: >>rand(1,2,3)

2: ans(:,:,1) =

3:    0.445586200710899   0.646313010111265

4: ans(:,:,2) =

5:    0.709364830858073   0.754686681982361

6: ans(:,:,3) =

7:    0.276025076998578   0.679702676853675

Y = randn(size(A)),返回一个和A有同样维数大小的随机数组。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12510576.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-26
下一篇 2023-05-26

发表评论

登录后才能评论

评论列表(0条)

保存