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
声明结构体类型
[stag] .struct [expr]
[mem0] element [expr0]
[mem1] element [expr1]
...
[memn] .tag stag [exprn]
...
[memN] element [exprN]
[size] .endstruct
label .tag stag
.struct 指令用于为数据结构定义的元素分配符号偏移量。这样便可将类似的数据元素分为一组,并由汇编器计算元素偏移量。这与 C 结构或 Pascal 记录相似。.struct 指令不会分配存储器空间;仅创建一个可重复使用的符号模板。
.endstruct 指令用于终止结构定义。
.tag 指令用于为 label 提供结构特征,简化符号表示,还可定义包含其他结构体的结构。.tag 指令不会分配存储器空间,必须事先定义 .tag 指令的结构标签(stag)。
与 .struct、.endstruct 和 .tag 指令一起使用的参数包括:
以下示例展示了 .struct、.tag 和 .endstruct 指令的各种用途。
1 REAL_REC .struct ; stag
2 00000000 NOM .int ; member1 = 0
3 00000004 DEN .int ; member2 = 1
4 00000008 REAL_LEN .endstruct ; real_len = 4
5
6 00000000 E59F0004 LDR R0, REAL_A
7 00000004 E5904004 LDR R4, [R0, #REAL_REC.DEN]
8 00000008 E0811004 ADD R1, R1, R4
9 00000000 .bss REAL, REAL_LEN ; allocate mem rec
10 0000000c 00000000- REAL_A .word REAL
11
12 CPLX_REC .struct
13 00000000 REALI .tag REAL_REC ; stag
14 00000008 IMAGI .tag REAL_REC ; member1 = 0
15 00000010 CPLX_LEN .endstruct ; cplx_len = 8
16
17 COMPLEX .tag CPLX_REC ; assign structure
18 ; attribute
19 00000010 COMPLEX .space CPLX_LEN ; allocate space
20 00000020 E51F4018 LDR R4, COMPLEX.REALI ; access structure
21 00000024 E0811004 ADD R1, R1, R4
1 .struct ; no stag puts mems into
2 ; global symbol table
3 00000000 X .int ; create 3 dim templates
4 00000004 Y .int
5 00000008 Z .int
6 0000000C .endstruct
1 BIT_REC .struct ; stag
2 00000000 STREAM .string 64
3 00000040 BIT7 .field 7 ; bit7 = 64
4 00000040 BIT8 .field 9 ; bit9 = 64
5 00000042 BIT10 .field 10 ; bit10 = 64
6 00000044 X_INT .int ; x_int = 68
7 00000048 BIT_LEN .endstruct ; length = 72