最近的一个项目中以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上?还是需要改动? |