ZHCU947E June 2015 – January 2023
这些指令设置了专门的类型供之后用于 .tag 指令,允许您使用符号名称来引用复合对象的各部分。创建的类型类似于 C 语言的结构体和联合体类型。
.struct、.union、.cstruct 和 .cunion 指令将相关数据分组到更容易访问的聚合结构中。这些指令不会为任何对象分配空间。对象必须单独分配,并且必须使用 .tag 指令为对象分配类型。
COORDT .struct ; structure tag definition
X .byte ;
Y .byte
T_LEN .endstruct
COORD .tag COORDT ; declare COORD (coordinate)
.bss COORD, T_LEN ; actual memory allocation
LDB *+B14(COORD.Y), A2 ; move member Y of structure
; COORD into register A2
.cstruct 和 .cunion 指令可保证数据结构将具有相同的对齐和填充,就好像该结构是在类似的 C 代码中定义的一样。这允许在 C 和汇编代码之间共享结构。请参阅GUID-413E9C31-DDE9-4735-87A6-20C56CBC9D51.html#GUID-413E9C31-DDE9-4735-87A6-20C56CBC9D51。对于 .struct 和 .union,元素偏移量的计算由汇编器决定,因此布局可能与 .cstruct 和 .cunion 不同。