ARM的C语言编程忠告之C数据类型的有效用法
2013-05-24 21:33
246 查看
【这是从书上摘录的】
1.对于存放在寄存器中的局部变量,除了8位或16位的算术模运算外,尽量不要使用char和short类型,而要使用有符号或者无符号int类型。除法运算时使用无符号数执行速度更快。
2.对于存放的主存储器中的数组和全局变量,在满足数据大小的前提下,应尽可能使用小尺寸的数据类型,这样做可以节省存储空。ARMv4体系结构可以有效地装载和存储所有宽度的数据,并可以使用递增数组指针来有效地访问数组。对于short类型数组,要避免使用数组基地址的偏移量,因为LDRH指令不支持偏移寻址。
3.通过读取数组或全局变量并赋给不同类型的局部变量时,或者把局部变量写入不同类型的数组或者全局变量时,要进行显示数据类型转换。这种转换是编译器可以明确、快速地处理,把存储器中数据宽度比较窄的数据类型扩展,并赋给寄存器中较宽的类型。
4.由于隐式或者显式的数据类型转换通常会有额外的指令周期开销,所以在表达式中应尽量避免使用。load和store指令一般不会产生额外的转换开销,因为它们是自动完成数据类型转换的。
5. 对于函数参数和返回值应尽量避免使用char和short类型。即使参数范围比较小,也应该使用int类型,以防止编译器做不必要的类型转换。
1.对于存放在寄存器中的局部变量,除了8位或16位的算术模运算外,尽量不要使用char和short类型,而要使用有符号或者无符号int类型。除法运算时使用无符号数执行速度更快。
2.对于存放的主存储器中的数组和全局变量,在满足数据大小的前提下,应尽可能使用小尺寸的数据类型,这样做可以节省存储空。ARMv4体系结构可以有效地装载和存储所有宽度的数据,并可以使用递增数组指针来有效地访问数组。对于short类型数组,要避免使用数组基地址的偏移量,因为LDRH指令不支持偏移寻址。
3.通过读取数组或全局变量并赋给不同类型的局部变量时,或者把局部变量写入不同类型的数组或者全局变量时,要进行显示数据类型转换。这种转换是编译器可以明确、快速地处理,把存储器中数据宽度比较窄的数据类型扩展,并赋给寄存器中较宽的类型。
4.由于隐式或者显式的数据类型转换通常会有额外的指令周期开销,所以在表达式中应尽量避免使用。load和store指令一般不会产生额外的转换开销,因为它们是自动完成数据类型转换的。
5. 对于函数参数和返回值应尽量避免使用char和short类型。即使参数范围比较小,也应该使用int类型,以防止编译器做不必要的类型转换。
相关文章推荐
- C语言的数据类型→浮点型数据 有效位数
- ARM的C语言编程忠告之编写高效的循环
- 用C语言单片机编程为什么总是用无符号的数据类型来定义?
- C语言基本数据类型:整型(int)用法详解
- [编程] C语言变量和数据类型总结练习题
- 关于ARM的C语言数据类型
- arm体系中c语言的数据类型
- VC常用的Windows数据类型与ARM嵌入式C语言的数据类型
- Android JNI编程(二)——C语言的基本数据类型,输出函数,输入函数
- C语言基本数据类型:整型(int)用法详解
- C语言之数据类型
- 深入理解C语言-----各数据类型大小
- C语言各种数据类型取值范围
- C语言基本数据类型详解
- OC学习:SEL类型数据和selector的用法
- ASP.NET AJAX客户端编程之旅(三)——让JavaScript和C#无障碍沟通:数据类型自动转换&序列化
- [转]Linux下Socket网络编程,文件传输,数据传输的C语言例子
- C语言之基本数据类型(笔记二)
- C语言数据类型简介