打印

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

[复制链接]
7877|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
johnwjl|  楼主 | 2007-10-20 10:02 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在其他论坛看到如下问题,自己也有点困惑,特来此地请教各位:

请教:关于全局变量与局部变量使用的问题本人是初次做DSP开发,在学校听过一个讲座,讲到全局变量与局部变量的使用问题,那个老师给我们讲,做嵌入式C编程要尽量使用局部变量,最好不要用全局变量。而我在此论坛上看到一篇**说:要多用全局变量和静态变量,少用局部变量。

兄弟们能不能给点意见!!!

相关帖子

沙发
翔子| | 2007-10-20 10:33 | 只看该作者

DSP交流网

我习惯多用全局变量

可能看个人习惯,或者说,我的做法一直都是错的
反正我还是**我的做法。我写的程序也不是很大。
相关链接:http://www.hellodsp.com

使用特权

评论回复
板凳
johnwjl|  楼主 | 2007-10-21 18:14 | 只看该作者

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

是不是搞ARM和搞DSP,全局变量与局部变量的使用有所不同?DSP中提倡尽量使用全局变量?

使用特权

评论回复
地板
wowow| | 2007-10-21 18:32 | 只看该作者

不同的项目有不同的要求

自己弄清楚各种变量类型的优缺点,针对项目中不同的变量自己灵活把握。
要考虑的的问题有:
1.变量的生存周期
2.可移植性
3.安全性
4.占用的空间
5.程序的效率
。。。。等等

使用特权

评论回复
5
soso| | 2007-10-22 12:53 | 只看该作者

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

使用特权

评论回复
6
tjsheep| | 2007-10-23 22:10 | 只看该作者

呵呵,这里有定义的问题

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

使用特权

评论回复
7
qzx0580| | 2007-10-24 10:38 | 只看该作者

顶六楼

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

使用特权

评论回复
8
flylongins| | 2007-10-26 20:48 | 只看该作者

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

对程序的周期有着重要影响。
我一个程序的一个循环,
用局部变量,和用全局变量,
相差4倍的运行周期,
可不能小看。
原因6楼正解。

使用特权

评论回复
9
yydsp| | 2007-10-27 03:41 | 只看该作者

我觉得原则就是

我觉得原则就是:

一般能用局部变量的地方都采用局部变量。如果改成全局变量能够很好的提高效率,比如减少参数传递,可以用全局变量。全局变量太多,一个project没关系,如果一个DSP片子上集成不同的project,就不太好了。

另外,全局变量也是可以随便放在任何地址空间的,自己指定就是了。

使用特权

评论回复
10
computer00| | 2007-10-27 08:09 | 只看该作者

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

但是大量的局部变量,只能分配到栈中,这牵涉到堆栈指针的调整以及大量数据的传递等,有时用全局变量反而更好。

使用特权

评论回复
11
hong7817| | 2012-11-29 19:40 | 只看该作者
我也是做控制的,习惯用全局变量,还方便调试

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

6

主题

204

帖子

0

粉丝