【摘要】在嵌入式系统的程序设计中,由于软硬件平台的多变性,对程序的可移植性、可扩充性、可裁减性及可维护性等有更严格的要求。本文从宏定义设计、数据结构设计及函数设计等方面,简单介绍了可移植性的设计问题。在嵌入式应用中非常注重代码的时空效率,即产生的代码运行时间和占用的存储空间尽可能少。程序设计一章介绍了如何提高程序的运行效率的相关技巧。
【关键词】嵌入式,可移植性,可维护,可裁减,宏定义设计,数据结构设计,时空效率
目录
1 宏定义设计... - 1 -
1.1 为何要采用宏定义?... - 1 -
1.2 宏定义的基本规则... - 1 -
1.3 依赖关系定义宏改善移植性... - 1 -
1.4 通过偏移量和掩码进行位操作... - 2 -
2 数据结构设计... - 4 -
2.1 结构体中成员对齐规则... - 4 -
2.1.1 自然对界... - 4 -
2.1.2 指定对界... - 4 -
2.2 合理设计成员顺序... - 5 -
2.2.1 减少结构体存储空间... - 5 -
2.2.2 填充部分域,避免字节对齐问题... - 6 -
2.2.3 字节对齐问题实例... - 7 -
2.3 采用位域构造结构体... - 8 -
2.3.1 位域设计传输协议... - 8 -
2.3.2 位域的可移植性问题... - 9 -
2.3.3 位域设计硬件配置字... - 10 -
2.4 通过union和struct传递不同格式报文... - 11 -
2.5 将相关功能变量封装为结构体... - 13 -
3 函数设计... - 15 -
3.1 避免过多函数参数,提高调用性能... - 15 -
3.2 合理设计模块,减小耦合度... - 16 -
3.3 用宏函数提高时间效率... - 18 -
3.3.1 宏参数的基本规则... - 18 -
3.3.2 宏语句的基本规则... - 18 -
3.3.3 宏的副作用... - 20 -
3.4 Const修饰输入指针参数... - 21 -
4 程序设计... - 22 -
4.1 循环转置... - 22 -
4.2 减小运算强度... - 23 -
4.2.1 位操作实现求余运算... - 23 -
4.2.2 用移位实现乘除法运算... - 23 -
4.2.3 将循环体内的乘法运算改成循环自加运算... - 23 -
4.3 减少不变计算... - 24 -
4.3.1 循环内部避免恒定式... - 24 -
4.3.2 避免结构体深度访问... - 25 -
4.4 减少存储访问指令周期和个数... - 26 -
4.5 查表... - 28 -
4.6 使用自加、自减指令... - 28 -
4.7 根据频率进行case 排序... - 29 -
4.8 函数指针表替代switch-case. - 30 -
阅读(1864) | 评论(0) | 转发(0) |