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
保留未初始化的空间
symbol .usect "section name", size in bytes[, alignment[, bank offset] ]
.usect 指令用于在未初始化的命名段中为变量保留空间。该指令类似于 .bss 指令(参阅 .bss 主题);两者都只是为数据保留空间,而该空间没有内容。但是,.usect 定义了可以放置在存储器中任何位置的其他段,这些段独立于 .bss 段。
初始化段的指令(.text、.data 和 .sect)指示汇编器暂停汇编到当前段,并开始汇编到另一个段中。在当前段中遇到的 .usect 或 .bss 指令会直接汇编,然后在当前段中继续汇编。
可在存储器中连续放置的变量可在同一指定段中定义;方法是用同一指令名和后续符号(变量名)重复 .usect 指令。
有关各段的更多信息,请参阅Chapter12。
此示例使用 .usect 指令定义两个未初始化的命名段 var1 和 var2。符号 ptr 指向 var1 段中保留的第一个字节。符号 array 指向 var1 中保留的 100 个字节的块中的第一个字节,dflag 指向 var1 中 50 个字节的块中的第一个字节。符号 vec 指向 var2 段中保留的第一个字节。
图 5-8 展示了此示例如何在两个未初始化的段 var1 和 var2 中保留空间。
1 ******************************************************
2 ** 汇编到 .text 段。 **
3 ******************************************************
4 00000000 .text
5 00000000 E3A01003 MOV R1, #03h
6
7 ******************************************************
8 ** 保留 var1 段中的 1 个字节。 **
9 ******************************************************
10 00000000 ptr .usect "var1", 1
11
12 ******************************************************
13 ** 保留 var1 段中的 100 个字节。 **
14 ******************************************************
15 00000001 array .usect "var1", 100
16
17 00000004 E281001F ADD R0, R1, #037 ; Still in .text
18
19 ******************************************************
20 ** 保留 var1 段中的 50 个字节。 **
21 ******************************************************
22 00000065 dflag .usect "var1", 50
23
24 00000008 E2812064 ADD R2, R1, #dflag - array ; Still in .text
25
26 ******************************************************
27 ** 保留 var2 段中的 100 个字节。 **
28 ******************************************************
29 00000000 vec .usect "var2", 100
30
31 0000000c E0824000 ADD R4, R2, R0 ; Still in .text
32 ******************************************************
33 ** 将 .usect 符号声明为一个外部符号。 **
34 ******************************************************
35 .global array