ZHCUAU3J January 2018 – March 2024
对于基本(标量)类型的对象,其最小对齐方式取决于其所属类型的大小。对于具有数组类型的对象,其最小对齐方式是由其元素类型指定的。
有关数据类型的一般信息,请参阅节 5.3。表 6-1 列出了各种数据类型的寄存器存储空间和存储器存储空间:
数据类型 | 寄存器存储 | 存储器存储 |
---|---|---|
char | 寄存器的位 0-7 | 8 位,与 8 位边界对齐 |
unsigned char | 寄存器的位 0-7 | 8 位,与 8 位边界对齐 |
short | 寄存器的位 0-15 | 16 位,与 16 位边界对齐 |
unsigned short | 寄存器的位 0-15 | 16 位,与 16 位边界对齐 |
int | 寄存器的位 0-31 | 32 位,与 32 位边界对齐 |
unsigned int | 寄存器的位 0-31 | 32 位,与 32 位边界对齐 |
long | 整个标量寄存器或向量寄存器的位 0-63 | 64 位,与 64 位边界对齐 |
unsigned long | 整个标量寄存器或向量寄存器的位 0-63。 | 64 位,与 64 位边界对齐 |
enum (1) | 寄存器的位 0-31 或整个寄存器 | 32 位(与 32 位边界对齐)或 64 位(与 64 位边界对齐) |
float | 寄存器的位 0-31 | 32 位,与 32 位边界对齐 |
double | 整个标量寄存器或向量寄存器的位 0-63。 | 64 位,与 64 位边界对齐 |
long double | 整个标量寄存器或向量寄存器的位 0-63。 | 64 位,与 64 位边界对齐 |
结构体 | 成员按其各自类型的需要存储。 | 存储器是最大成员类型边界对齐的倍数;成员根据其各自类型要求进行存储和对齐。 |
数组 | 成员按其各自类型的需要存储。 | 成员按其各自类型的需要存储。结构中的所有数组都根据数组中每个元素的类型对齐。 |
指向数据成员的指针 | 整个标量寄存器或向量寄存器的位 0-63。 | 64 位,与 64 位边界对齐 |
指向成员函数的指针 | 组件按其各自类型的要求存储 | 64 位,与 64 位边界对齐 |
cchar | 寄存器的位 0-15 | 8 位,与 8 位边界对齐 |
cshort | 寄存器的位 0-31 | 16 位,与 16 位边界对齐 |
cint | 整个标量寄存器或向量寄存器的位 0-63 | 64 位,与 32 位边界对齐 |
cfloat | 整个标量寄存器或向量寄存器的位 0-63 | 64 位,与 32 位边界对齐 |
clong | 向量寄存器的位 0-127 | 128 位,与 64 位边界对齐 |
cdouble | 向量寄存器的位 0-127 | 128 位,与 64 位边界对齐 |
对于向量数据类型,对象的最小对齐方式由其元素的类型指定。