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
以下内置替代符号函数使您能够根据替代符号的字符串值做出决定。这些函数总是会返回值,并可以在表达式中使用。内置替代符号函数在条件汇编表达式中特别有用。这些函数的参数是替代符号或字符串常量。
在表 6-1 所示的函数定义中,a 和 b 是表示替代符号或字符串常量的参数。术语字符串 指的是参数的字符串值。符号 ch 表示字符常量。
函数 | 返回值 |
---|---|
$$symlen (a) | 字符串 a 的长度 |
$$symcmp (a,b) | < 0 if a < b; 0 if a = b; > 0 if a > b |
$$firstch (a,ch) | 字符常量 ch 在字符串 a 中第一次出现的索引 |
$$lastch (a,ch) | 字符常量 ch 在字符串 a 中最后一次出现的索引 |
$$isdefed (a) | 如果在符号表中定义了字符串 a,则为 1 |
如果在符号表中未定义字符串 a,则为 0 | |
$$ismember (a,b) | 列表 b 的顶部成员被分配给字符串 a |
如果 b 是空字符串,则为 0 | |
$$iscons (a) | 如果字符串 a 是二进制常量,则为 1 |
如果字符串 a 是八进制常量,则为 2 | |
如果字符串 a 是十六进制常量,则为 3 | |
如果字符串 a 是字符常量,则为 4 | |
如果字符串 a 是十进制常量,则为 5 | |
$$isname (a) | 如果字符串 a 是有效的符号名称,则为 1 |
如果字符串 a 不是有效的符号名称,则为 0 | |
$$isreg (a)(1) | 如果字符串 a 是有效的预定义寄存器名称,则为 1 |
如果字符串 a 不是有效的预定义寄存器名称,则为 0 |
以下示例显示了内置替代符号函数。
.asg label, ADDR ; ADDR = label
.if ($$symcmp(ADDR, "label") = 0) ; evaluates to true
LDR R4, ADDR
.endif
.asg "x,y,z" , list ; list = x,y,z
.if ($$ismember(ADDR,list)) ; ADDR = x, list = y,z
SUB R4, R4, #4 ; sub x
.endif