ZHCUAV7Z september 1995 – march 2023 66AK2E05 , 66AK2H06 , 66AK2H12 , 66AK2H14 , AM1705 , AM1707 , AM1802 , AM1806 , AM1808 , AM1810 , AM5K2E04 , OMAP-L132 , OMAP-L137 , OMAP-L138 , SM470R1B1M-HT , TMS470R1A288 , TMS470R1A384 , TMS470R1A64 , TMS470R1B1M , TMS470R1B512 , TMS470R1B768
这些指令设置了专门的类型供之后用于 .tag 指令,允许您使用符号名称来引用复合对象的各部分。创建的类型类似于 C 语言的结构体和联合体类型。
.struct、.union、.cstruct 和 .cunion 指令将相关数据分组到更容易访问的聚合结构中。这些指令不会为任何对象分配空间。对象必须单独分配,并且必须使用 .tag 指令为对象分配类型。
type .struct ; structure tag definition
X .int
Y .int
T_LEN .endstruct
COORD .tag type ; declare COORD (coordinate)
COORD .space T_LEN ; actual memory allocation
LDR R0, COORD.Y ; load member Y of structure
; COORD into register R0.
.cstruct 和 .cunion 指令可保证数据结构将具有相同的对齐和填充,就好像该结构是在类似的 C 代码中定义的一样。这允许在 C 和汇编代码之间共享结构。请参阅Chapter447。对于 .struct 和 .union,元素偏移量的计算由汇编器决定,因此布局可能与 .cstruct 和 .cunion 不同。