ARM汇编语言中的表达式补充
2017-06-22
3)基于寄存器和基于PC的表达式
基于寄存器的表达式表示某个寄存器的值加上(或减去)一个数字表达式。基于PC的表达式表示PC寄存器的值加上(或减去)一个数字表达式。基于PC的表达式通常由程序中的标号与一个数字表达式组成。相关的操作符有以下几种。
(1)BASE
BASE操作符返回基于寄存器的表达式中的寄存器编号。
:BASE:A
其中:A为基于寄存器的表达式。
(2)INDEX
INDEX操作符返回基于寄存器的表达式相对于基址寄存器的偏移量。
:INDEX:A
其中:A为基于寄存器的表达式
(3)+、—
+、—为正负号。它们可放在数字表达式或基于PC的表达式前面。
+A
—A
其中:A为基于PC的表达式或数字表达式。
4)逻辑表达式
逻辑表达式由逻辑量、逻辑操作符、关系操作符以及括号组成。其取值范围为{FALSE}和{TURE}。
(1) 关系操作符
关系操作符用于表示两个同类的表达式之间的关系。关系操作符一般与两个操作数组成一个逻辑表达式。操作数类型可以是数字表达式、字符串表达式、基于寄存器的表达式及基于PC的表达式。注意,数字表达式都看做无符号数,字符串比较是根据串中对应字符的ASCII值进行比较的。关系操作符及格式如下:
A=B 表示A等于B
A>B 表示A大于B
A>=B 表示A大于或者等于B
A<B 表示A小于B
A<=B 表示A小于或者等于B
A/=B 表示A不等于B
A<>B 表示A不等于B
(2) 逻辑操作符
逻辑操作符用于进行两个逻辑表达式之间的基本逻辑操作。其语法格式如下:
:LNOT:A 逻辑表达式A的值取反
A:LAND:B 逻辑表达式A和B的逻辑“与”
A:LOR:B 逻辑表达式A和B的逻辑“或”
A:LEOR:B 逻辑表达式A和B的逻辑“异或”。
其中:A和B是两个逻辑表达式。
5)其他一些操作符
(1)·?
操作符的语法格式及含义如下,其中A为一个字符:
?A
返回定义字符A是代码行所产生的可执行代码的字节数。
(2)·DEF
DEF操作符判断某个符号是否已经定义。其语法格式及含义如下,其中A为一个符号:
:DEF:A
如果符号A已经定义,则上述结果为{TURE};否则上述结果为{FALSE}。
(3)·SB OFFSET_19_12
SB OFFSET_19_12语法格式及含义如下,其中label为一个标号:
:SB OFFSET_19_12:label
返回(label—SB)的位[19:12]。
(4) ·SB OFFSET_11_0
SB OFFSET_11_0语法格式及含义如下,其中label为一个标号:
:SB OFFSET_11_0:label
返回(label—SB)的位[11:0]。