- UID
- 1029342
- 性别
- 男
|
这样一来,循环体中的指令数增加了,循环次数却减少了。跳转指令带来的负面影响得以削弱。利用ARM 7 处理器32位字长的特性,上述代码可进一步作如下调整:
void memcopy(char *to, char *from, unsigned int nbytes)
{
int *p_to = (int *)to;
int *p_from = (int *)from;
while(nbytes) {
*p_to++ = *p_from++;
*p_to++ = *p_from++;
*p_to++ = *p_from++;
*p_to++ = *p_from++;
nbytes - = 16;
}
}
经过优化后,一次循环可以处理16个字节。跳转指令带来的影响进一步得到减弱。不过可以看出, 调整后的代码在代码量方面有所
增加。
(2)使用寄存器变量
CPU 对寄存器的存取要比对内存的存取快得多,因此为变量分配一个寄存器, 将有助于代码的优化和运行效率的提高。整型、指针、浮点等 类型的变量都可以分配寄存器;一个结构的部分或者全部也可以分配寄存器。给循环体中需要频繁访问的变量分配寄存器也能在一定程度上提高程序效率。 |
|