注册 登录
电子工程世界-论坛 返回首页 EEWORLD首页 频道 EE大学堂 下载中心 Datasheet 专题
wangmxe的个人空间 https://home.eeworld.com.cn/space-uid-91642.html [收藏] [复制] [分享] [RSS]
日志

ARM C程序优化总结一

已有 1990 次阅读2009-4-11 21:09

最近正在读沈建华译的《ARM嵌入式系统开发—软件设计与优化》这本书,感觉这本书写的非常好,现在把书中关于C程序的优化部分的总结分享给大家,希望对从事ARM学习和开发的朋友有所帮助。
一、C数据类型的有效用法 
 
  1.对于存放在寄存器中的局部变量,除了8位或16位的算术模运算外,尽量不要使用charshort类型,而要使用有符号或者无符号int类型。除法运算时使用无符号数执行速度更快。
      2. 对于存放在主存储器中的数组和全局变量,在满足数据大小的前提下,应尽可能使用小尺寸的数据类型,这样做可以节省存储空间。ARMv4体系结构可以有效地装载和存储所有宽度的数据,并可以使用递增数组指针来有效地访问数组。对于short类型的数组,要避免使用数组基地址的偏移量,因为LDRH指令不支持偏移寻址。如对一个short类型的数组a[n],加载数组时不要用a[i]的形式,而要用*a ++)的形式。
      3.通过读取数组或者全局变量并赋给不同类型的局部变量时,或者把局部变量写入不同类型的数组或者全局变量时,要进行显式的数据类型转换。这种转换是编译器可以明确、快速的处理,把存储器中数据宽度比较窄的数据类型扩展,并赋给寄存器中较宽的类型。 
      4.
由于隐式或者显式的数据类型转换通常会有额外的指令周期开销,所以在表达式中应尽量避免使用。LoadStore指令一般不会产生额外的转换开销,因为loadstore指令是自动完成数据类型转换的。
      5.对于函数参数和返回值应尽量避免使用charshort类型。即使参数范围比较小,也应该使用int类型,以防止编译器做不必要的类型转换

 

发表评论 评论 (2 个评论)
回复 soso 2009-4-23 14:55
已推荐到首页
回复 my19840815 2009-4-29 14:48
:handshake :victory:

facelist doodle 涂鸦板

您需要登录后才可以评论 登录 | 注册

热门文章