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
分配替代符号
.asg "character string",substitution symbol
.define "character string",substitution symbol
.eval expression,substitution symbol
.asg 和 .define 指令用于将字符串分配给替代符号。替代符号存储在替代符号表中。.asg 指令的使用方法与 .set 指令有诸多相同之处,区别在于 .set 会为符号分配一个常量值(不能重新定义),而 .asg 会为替代符号分配一个字符串(可重新定义)。
.define 指令的运行方式与 .asg 指令相同,但 .define 不允许创建与寄存器符号或助记符同名的替代符号。它不会在汇编器中创建新的符号命名空间,而是使用现有的替代符号命名空间。.define 指令用于在转换 C/C++ 头文件时防止汇编环境遭损坏。有关在汇编源代码中使用 C/C++ 头文件的更多信息,请参见Chapter447。
.eval 指令对存储在替代符号表中的替代符号执行算术运算。该指令会计算 表达式 并将结果的字符串值分配给替代符号。.eval 指令作为 .loop/.endloop 块中的计数器特别有用。
有关如何关闭替代符号的信息,请参阅 .unasg/.undefine 主题。
此示例演示了如何使用 .asg 和 .eval。
1 .sslist ; show expanded sub. symbols
2 ; using .asg and .eval
3
4 .asg R13, STACKPTR
5 .asg &, AND
6
7 00000000 E28DD018 ADD STACKPTR, STACKPTR, #280 AND 255
# ADD R13, R13, #280 & 255
8 00000004 E28DD018 ADD STACKPTR, STACKPTR, #280 & 255
# ADD R13, R13, #280 & 255
9
10 .asg 0, x
11 .loop 5
12 .eval x+1, x
13 .word x
14 .endloop
1 .eval x+1, x
# .eval 0+1, x
1 00000008 00000001 .word x
# .word 1
1 .eval x+1, x
# .eval 1+1, x
1 0000000c 00000002 .word x
# .word 2
1 .eval x+1, x
# .eval 2+1, x
1 00000010 00000003 .word x
# .word 3
1 .eval x+1, x
# .eval 3+1, x
1 00000014 00000004 .word x
# .word 4
1 .eval x+1, x
# .eval 4+1, x
1 00000018 00000005 .word x
# .word 5