ZHCU947E June 2015 – January 2023
保留未初始化的空间
symbol .usect "section name", size in bytes[, alignment[, bank offset] ]
.usect 指令用于在未初始化的命名段中为变量保留空间。该指令类似于 .bss 指令(参阅 .bss 主题);两者都只是为数据保留空间,而该空间没有内容。但是,.usect 定义了可以放置在存储器中任何位置的其他段,这些段独立于 .bss 段。
初始化段的指令(.text、.data 和 .sect)指示汇编器暂停汇编到当前段,并开始汇编到另一个段中。在当前段中遇到的 .usect 或 .bss 指令会直接汇编,然后在当前段中继续汇编。
可在存储器中连续放置的变量可在同一指定段中定义;方法是用同一指令名和后续符号(变量名)重复 .usect 指令。
有关各段的更多信息,请参阅GUID-F317E356-FBE6-4802-ABC0-AF125934B28D.html#GUID-F317E356-FBE6-4802-ABC0-AF125934B28D。
此示例使用 .usect 指令定义两个未初始化的命名段 var1 和 var2。符号 ptr 指向 var1 段中保留的第一个字节。符号 array 指向 var1 中保留的 100 个字节的块中的第一个字节,dflag 指向 var1 中 50 个字节的块中的第一个字节。符号 vec 指向 var2 段中保留的第一个字节。
#STDZ0722050 展示了此示例如何在两个未初始化的段 var1 和 var2 中保留空间。
1 ***************************************************
2 ** 汇编到 .text 段 **
3 ***************************************************
4 00000000 .text
5 00000000 008001A0 MV A0,A1
6
7 ***************************************************
8 ** 保留 var1 中的 2 个字节。 **
9 ***************************************************
10 00000000 ptr .usect "var1",2
11 00000004 0100004C- LDH *+B14(ptr),A2 ; still in .text
12
13 ***************************************************
14 ** 保留 var1 中的 100 个字节 **
15 ***************************************************
16 00000002 array .usect "var1",100
17 00000008 01800128- MVK array,A3 ; still in .text
18 0000000c 01800068- MVKH array,A3
19
20 ***************************************************
21 ** 保留 var1 中的 50 个字节 **
22 ***************************************************
23 00000066 dflag .usect "var1",50
24 00000010 02003328- MVK dflag,A4
25 00000014 02000068- MVKH dflag,A4
26
27 ***************************************************
28 ** 保留 var1 中的 100 个字节 **
29 ***************************************************
30 00000000 vec .usect "var2",100
31 00000018 0000002A- MVK vec,B0 ; still in .text
32 0000001c 0000006A- MVKH vec,B0