关于DSP中全局变量与局部变量的使用

[复制链接]
9134|10
 楼主| johnwjl 发表于 2007-10-20 10:02 | 显示全部楼层 |阅读模式
在其他论坛看到如下问题,自己也有点困惑,特来此地请教各位:<br /><br />请教:关于全局变量与局部变量使用的问题本人是初次做DSP开发,在学校听过一个讲座,讲到全局变量与局部变量的使用问题,那个老师给我们讲,做嵌入式C编程要尽量使用局部变量,最好不要用全局变量。而我在此论坛上看到一篇**说:要多用全局变量和静态变量,少用局部变量。<br /><br />兄弟们能不能给点意见!!!<br />
翔子 发表于 2007-10-20 10:33 | 显示全部楼层

DSP交流网

我习惯多用全局变量<br /><br />可能看个人习惯,或者说,我的做法一直都是错的<br />反正我还是**我的做法。我写的程序也不是很大。 <br /> 相关链接:<a href='http://www.hellodsp.com'>http://www.hellodsp.com</a>
 楼主| johnwjl 发表于 2007-10-21 18:14 | 显示全部楼层

DSP中提倡尽量使用全局变量?

是不是搞ARM和搞DSP,全局变量与局部变量的使用有所不同?DSP中提倡尽量使用全局变量?
wowow 发表于 2007-10-21 18:32 | 显示全部楼层

不同的项目有不同的要求

自己弄清楚各种变量类型的优缺点,针对项目中不同的变量自己灵活把握。<br />要考虑的的问题有:<br />1.变量的生存周期<br />2.可移植性<br />3.安全性<br />4.占用的空间<br />5.程序的效率<br />。。。。等等
soso 发表于 2007-10-22 12:53 | 显示全部楼层

应该没有具体的定论,且这个是C语言区别,不存在只DSP这样.

  
tjsheep 发表于 2007-10-23 22:10 | 显示全部楼层

呵呵,这里有定义的问题

一般堆栈都在高速ram区,所以局部变量会快一点,而全局变量在ebss或bss区,这个区域比较大,一般定义在外部ram,速度比较慢。所以看你的变量需要的多少来定。<br />第二个,如果是做解码等计算量大的工作,那么程序结构以函数包为主,那么基本上都是用局部变量,如果是做控制,那么需要大量的变量来控制和记录程序运行的流程,那么这些变量基本都是static或全局变量。<br />所以综合起来要看你的程序类型了,呵呵
qzx0580 发表于 2007-10-24 10:38 | 显示全部楼层

顶六楼

六楼关于解码的说法正确与否我不知道,但是对于控制的理解与我是一致的.在控制中作为承上启下的参数几乎都是设置为全局变量的.只有极少数无关紧要的变量只供函数内部使用的定义为局部变量.
flylongins 发表于 2007-10-26 20:48 | 显示全部楼层

局部变量和全局变量区别很大。

对程序的周期有着重要影响。<br />我一个程序的一个循环,<br />用局部变量,和用全局变量,<br />相差4倍的运行周期,<br />可不能小看。<br />原因6楼正解。
yydsp 发表于 2007-10-27 03:41 | 显示全部楼层

我觉得原则就是

我觉得原则就是:<br /><br />一般能用局部变量的地方都采用局部变量。如果改成全局变量能够很好的提高效率,比如减少参数传递,可以用全局变量。全局变量太多,一个project没关系,如果一个DSP片子上集成不同的project,就不太好了。<br /><br />另外,全局变量也是可以随便放在任何地址空间的,自己指定就是了。<br />
computer00 发表于 2007-10-27 08:09 | 显示全部楼层

通常少量的局部变量会分配在寄存器中,这样运行速度很快

但是大量的局部变量,只能分配到栈中,这牵涉到堆栈指针的调整以及大量数据的传递等,有时用全局变量反而更好。
hong7817 发表于 2012-11-29 19:40 | 显示全部楼层
我也是做控制的,习惯用全局变量,还方便调试
您需要登录后才可以回帖 登录 | 注册

本版积分规则

6

主题

204

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部