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
符号常数是指值为绝对常数表达式的符号(请参阅节 4.9)。通过使用符号常数,您可以为常数表达式分配有意义的名称。.set 和 .struct/.tag/.endstruct 指令让您可以设置符号常数(请参阅“Define 汇编时常数”)。定义后,符号常数便无法重新定义。
如果您使用 .set 指令来为符号分配值,该符号便会成为符号常数,并可以在需要使用常数表达式的地方使用。例如:
shift3 .set 3
MOV R0, #shift3
您还可以使用 .set 指令来为寄存器名称等其他符号分配符号常数。在这种情况下,符号常数会成为对应寄存器的同义词:
AuxR1 .set R1
LDR AuxR1, [SP]
下面的例子显示了 .set 指令可以如何与 .struct、.tag 和 .endstruct 指令搭配使用。它会创建符号常数 K、maxbuf、item、value、delta 和 i_len。
K .set 1024 ;constant definitions
maxbuf .set 2*K
item .struct ;item structure definition
.int value ;constant offsets value = 0
.int delta ;constant offsets delta = 1
i_len .endstruct
array .tag item ;array declaration
.bss array, i_len*K
汇编器还包含很多预定义的符号常数;节 4.8.6中讨论了这些符号常数。