ZHCADC3B February 2019 – October 2023
结构体成员会被分配从 0 开始的偏移量。每个成员会被分配满足其对齐要求的最低可用偏移量。成员之间可能需要进行填充,以便满足此对齐约束。
联合体成员全部被分配 0 偏移量。
C++ 类的底层表示是一个结构体。在本文档的其他地方,术语结构体 也适用于类。
结构体或联合体的对齐要求等同于其成员中最严格的对齐要求,包括下一节中所述的位字段容器。通过在最后一个成员之后插入填充,存储器中的结构体或联合体大小将向上舍入为其对齐的倍数。如节 3.3中的规定,在栈上按值传递的结构体和联合体具有特殊的对齐规则。
通常,大小为 32 位或更小的结构体在传递到函数或从函数返回时,可能驻留在寄存器或寄存器对中。此类结构体先在 R0H-R3H 寄存器中按值传递,然后在栈上按值传递。单字段结构体按对应于底层标量类型的值进行传递和返回。请参阅节 3.5,了解按引用传递和返回的更大结构体和联合体的信息。
对于支持 FPU32 或 FPU64 的器件,大小小于 128 位的同构浮点结构将按值传递。此外,对于支持 FPU64 的器件,64 位双精度值 (R0-R3) 按值传递。
在小端模式下,寄存器中的结构体始终右对齐;也就是说,第一个字节占用寄存器(如果是寄存器对,则为偶数寄存器)的 LSB,结构体的后续字节将填充到寄存器中递增的有效字节中。C28x 仅使用小端模式。