2008年07月28日 22:22:02 关于嵌入开发中 ARM 的 C 代码优化 下面是网络上收集关于 ARM 的 C 代码优化方法,在嵌入开发中应该有用: [声明:以下方法非本人发现和总结,均为有心之人无私贡献,谢谢他们的劳动与分享
] ======================================================= C 数据类型 1
C 语言的程序优化与编译器和硬件系统都有关系,设置某些编译器选项是最直接最简单的优化方式
在默认的情况下,armcc 是全部优化功能有效的,而 GNU 编译器的默认状态下优化都是关闭的
ARM C 编译器中定义的 char 类型是8位无符号的,有别于一般流行的编译器默认的 char是8位有符号的
所以循环中用 char 变量和条件 i ≥ 0时,就会出现死循环
为此,可以用 fsigned - char(for gcc)或者-zc(for armcc)把 char 改成 signed
其他的变量类型如下: char 无符号8位字节数据 short 有符号16位半字节数据 int 有符号32位字数据 long 有符号32位字数据 long long 有符号64位双字数据 2
关于局部变量 大多数 ARM 数据处理操作都是32位的,局部变量应尽可能使用32位的数据类型(int 或 long)就算处理8位或者16位的数值,也应避免用 char 和 short 以求边界对齐,除非是利用 char 或者short 的数据一出归零特性(如255+1=0,多用于模运算)
否则,编译器将要处理大于 short和 char 取值范围的情况而添加代码
另外对于表达式的处理也要格外小心,如下例子: short checksum_v3(short * data){ unsigned int i; short sum = 0;