ZHCU947E June 2015 – January 2023
终止局部符号块
.newblock
.newblock 指令用于取消定义任何当前定义的局部标签。本质上,局部标签是临时标签;.newblock 指令用于对它们进行重置并终止其范围。
局部标签可以是 $n 形式,其中 n 可以是一个十进制数字,也可以是 name? 形式,而 name 是合法符号名称。与其他标签不同,局部标签供局部使用,不能用在表达式中。它们只能用作 8 位跳转指令中的操作数。局部标签不会出现在符号表中。
在定义和(或许)使用局部标签后,您应该使用 .newblock 指令来重置局部标签。.text、.data 和 .sect 指令也会重置局部标签。包含文件中定义的局部标签在包含文件之外无效。
有关局部标签用法的更多信息,请参阅GUID-B02DF0C9-DB3B-401C-B1DE-E3857FBD1F97.html#GUID-B02DF0C9-DB3B-401C-B1DE-E3857FBD1F97。
下面的示例展示了如何声明、重置和再重新声明局部标签 $1。
1 .global table1, table2
2
3 00000000 00000028! MVKL table1,A0
4 00000004 00000068! MVKH table1,A0
5 00000008 008031A9 MVK 99, A1
6 0000000c 010848C0 || ZERO A2
7
8 00000010 80000212 $1:[A1] B $1
9 00000014 01003674 STW A2, *A0++
10 00000018 0087E1A0 SUB A1,1,A1
11 0000001c 00004000 NOP 3
12
13 .newblock ; undefine $1
14
15 00000020 00000028! MVKL table2,A0
16 00000024 00000068! MVKH table2,A0
17 00000028 008031A9 MVK 99, A1
18 0000002c 010829C0 || SUB A2,1,A2
19
20 00000030 80000212 $1:[A1] B $1
21 00000034 01003674 STW A2, *A0++
22 00000038 0087E1A0 SUB A1,1,A1
23 0000003c 00004000 NOP 3