函数的大小计算

来源:互联网 发布:有微信骚扰软件吗 编辑:程序博客网 时间:2024/05/29 07:06

如何计算一个函数在代码段里面占用的空间大小?

 

在需要将函数从flash搬移到Ram里面运行时会有这个问题:开辟出多大的空间才是与之匹配的呢?

 

问题的关键就是在flash上面找到这个函数的开始和结束的地方,计算其大小即可。

具体大小是要在编译器编译结束之后才能知道的,那么如何在编译生成的代码里面准确计算一个函数的代码大小呢?

1. 通过检索编译之后生成的.map文件得到函数代码大小。每个代码在编译之后都会生成相应代码然后再被链接器链接在一起,这样在.map文件里面都会生成每个函数的起始和结束地址以及其大小。这种方法的好处就是已知其大小,可以直接开一个固定的ram空间。缺点就是每次函数修改之后,这个ram空间大小有可能会需要做相应的调整。

2. 一般而言,编译器会将一个文件里面相邻的函数连续的放在一起,那么可以通过在函数的后面增加一个空的函数,通过计算这两个相邻函数的指针差而得到函数的大小。好处就是在程序里面可以很方便的就得到函数大小,是自适应的,不像上面的方法还得先编译才行。缺点就是编译完了后要去检查一下,这2个函数是否真的被链接在一起。

原创粉丝点击