首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

ARM程序设计优化策略与技术 大小端模式(4)

ARM程序设计优化策略与技术 大小端模式(4)

2.1 使用多寄存器操作指令  ARM 指令集中的多寄存器操作指令LDM/STM 可以加载/存储多个寄存器,这在保存/ 恢复寄存器组的状态及进行大块数据复制时非常有效。例如要将寄存器R4~R12及R14 的内容保存到堆栈中,若用STR 指令共需要10 条,而一条STMEA R13!, {R4 ?? R12, R14}指令就能达到相同的目的,节省的指令存储空间相当可观。不过需要注意的是,虽然一条LDM/STM 指令能代替多条LDR/STR 指令,但这并不意味着程序运行速度得到了提高。实际上处理器在执行LDM/STM指令的时候还是将它拆分成多条单独的LDR/STR 指令来执行。

2.2 合理安排变量顺序
  ARM 7 处理器要求程序中的32 位/16 位变量必须按字/半字对齐,这意味着如果变量顺序安排不合理, 有可能会造成存储空间的浪
费。例如:一个结构体中的4个32 位int 型变量i1 ~ i4 和4个8 位char 型变量c1 ~ c4,若按照i1、c1、i2、c2、i3、c3、i4、c4 的
顺序交错存放时, 由于整型变量的对齐会导致位于2个整型变量中间的那个8 位char 型变量实际占用 32位的存储器,这样就造成了存储空间的浪费。为避免这种情况, 应将int 型变量和char型变量按类似i1、i2、i3、i4、c1、c2、c3、c4的顺序连续存放。
  2.3 使用Thumb 指令
  为了从根本上有效降低代码尺寸,ARM 公司开发了16位的Thumb 指令集。Thumb 是ARM 体系结构的扩充。Thumb 指令集是大多数常用32位ARM 指令压缩成16 位宽指令的集合。在执行时,16 位指令透明的实时解压成32 位ARM指令并没有性能损失。而且程序在Thumb状态和ARM状态之间切换是零开销的。与等价的32 位ARM 代码相比,Thumb 代码节省的存储器空间可高达35% 以上。
  结语
  综上所述,优化的过程是在透彻了解软/硬件结构和特性的前提下,充分利用硬件资源,不断调整程序结构使之趋于合理的过程。其目的是最大程度发挥处理器效能,最大限度利用资源,尽可能提高程序在特定硬件平台上的性能。随着ARM处理器在通信及消费电子等行业中的应用日趋广泛,优化技术将在基于ARM处理器的程序设计过程中发挥越来越重要的作用。值得注意的是,程序的优化通常只是软件设计需要达到的诸多目标之一,优化应在不影响程序正确性、健壮性、可移植性及可维护性的前提下进行。片面追求程序的优化往往会影响健壮性、可移植性等重要目标。
继承事业,薪火相传
返回列表