ARM基础知识七

来源:本站
导读:目前正在解读《ARM基础知识七》的相关信息,《ARM基础知识七》是由用户自行发布的知识型内容!下面请观看由(电工技术网 - www.9ddd.net)用户发布《ARM基础知识七》的详细说明。
简介:ARM编译器支持的数据类型

*************************************************************

ARM编译器支持的数据类型

************************************************************

数据类型 长度(位) 对齐特性

Char 8 1(字节对齐)

short 16 2(百字对齐)

Int 32 4(字对齐)

Long 32 4(字对齐)

Longlong 64 4(字对齐)

Float 32 4(字对齐)

Double 64 4(字对齐)

Long double 64 4(字对齐)

All pointers 32 4(字对齐)

Bool(C++ only) 32 4(字对齐)

1.整数类型

在ARM体系中,整数类型是以2的补码形式存储的。对于long long类型来说,在little endian内存模式下,其低32位保存在低地址的字单元中,高32为保存在高地址的字单元中;在big endian模式下,其低32位保存在高地址的字单元中,高32为保存在低地址的字单元中。对于整型数据的操作遵守下面的规则:

**所有带符号的整型书的运算是按照二进制的补码进行的。

**带符号的整型数的运算不进行符号的扩展。

**带符号的整型数的右移操作是算数移位。

**制定的移位位数的数是8位的无符号数。

**进行移位操作的数被作为32位数。

**超过31位的逻辑左移的结果为0。

**对于无符号数和有符号的正数来说,超过32位的右移操作结果为0;对于有符号的负数来说,超过32位的右移操作结果为-1。

**整数除法运算的余数和除数有相同的符号。

**当把一个整数截断成位数更短的整数类型的数时,并不能保证所得到的结果的最高位的符号位的正确性。

**整型数据之间的类型转换不会产生异常中断。

**整型数据的溢出不会产生异常中断。

**整型数据除以0将会产生异常中断。

2.浮点数

在ARM体系中,浮点数是按照IEEE标准存储的。

**float类型的数是按照IEEE的单精度数表示的。

**double和long double 是用IEEE的双精度数表示的。

对于浮点数的操作遵守下面的规则:

**遵守正常的IEEE754规则。

**当默认情况下禁止浮点数运算异常中断。

**当发生卷绕时,用最接近的数据来表示。

3.指针类型的数据

下面的规则适用于处数据成员指针以外的其他指针:

**NULL被定义为0。

**相邻的两个存储单元地址相差一。

**在指向函数的指针和指向数据的指针进行数据转换时,编译器将会产生警告信息。

**类型size_t被定义为unsigned int.

**类型ptrdiff_t被定义为signed int。

**两个指针类型的数据相减时,结果可以按照下面的公式得到。

((int)a-(int)b)/(int)sizeof(type pointed to)

这时,只要指针所指的对象不是pack的,其对齐特性能够满足整除的要求。

提醒:《ARM基础知识七》最后刷新时间 2024-03-14 01:12:33,本站为公益型个人网站,仅供个人学习和记录信息,不进行任何商业性质的盈利。如果内容、图片资源失效或内容涉及侵权,请反馈至,我们会及时处理。本站只保证内容的可读性,无法保证真实性,《ARM基础知识七》该内容的真实性请自行鉴别。