打印

嵌入式编程与优化问题。

[复制链接]
1746|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
JadeTang|  楼主 | 2008-3-7 18:03 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
最近的一个项目中以LPC2292为CPU做的一个控制板。程序是用C写的,OS是UCOSII,软件用的是ADS1.2
程序里面有很多数组复制的操作。用的是for循环,但是在看了《ARM嵌入式系统开发:软件设计与优化》这本书以后发现在循环的部分程序可以大大优化,于是想更加优化一点,又看了《C与指针》这本书。里面有一个例子是如下
函数1.
void try1()
{  for(i=0;i<SIZE;i++)
     x=y;
}
函数2(用的是寄存器类型的指针)
void try2()
{  register int*p1,*p2;
   for(p1=x,p2=y;p1<&x[SIZE];)
       *p1++=*p2++;
}
函数2比函数1编成汇编代码以后,代码数少了1半不止,是不是意味着程序运行的时候就会快了一倍不止?还有《c与指针》书上提到的提高效率的方法是不是能够直接照般到ARM上?还是需要改动?

相关帖子

沙发
zgl7903| | 2008-3-7 18:10 | 只看该作者

这种最好用内置函数库 一般都支持 memcpy的

跟编译器和支持的硬件有很大的相关性

使用特权

评论回复
板凳
JadeTang|  楼主 | 2008-3-7 18:37 | 只看该作者

os中的库函数要是和我用的差不多怎么办?

而且我不知道我定义的数组在函数中的位置可以用吗?

使用特权

评论回复
地板
xwj| | 2008-3-7 19:56 | 只看该作者

Re:

os中的库函数要是和我用的差不多怎么办? 
--差不多的话说明你的代码写的不错或者编译器自带库优化就没到位  

而且我不知道我定义的数组在函数中的位置可以用吗? 
--怎么会不知道呢???
 

使用特权

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

本版积分规则

51

主题

108

帖子

0

粉丝