ZHCUAU3K January 2018 – March 2025
对于基本(标量)类型的对象,其最小对齐方式取决于其所属类型的大小。对于具有数组类型的对象,其最小对齐方式是由其元素类型指定的。
有关数据类型的一般信息,请参阅节 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 位边界对齐 |
对于向量数据类型,对象的最小对齐方式由其元素的类型指定。