ARM汇编语言中的表达式补充

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]。


通知公告
编辑观点
理事会
参考资料
版权声明

凡《网络安全与数据治理》(原《信息技术与网络安全》)录用的文章,如作者没有关于汇编权、翻译权、印刷权及电子版的复制权、信息网络传播权与发行权等版权的特殊声明,即视作该文章署名作者同意将该文章的汇编权、翻译权、印刷权及电子版的复制权、信息网络传播权与发行权授予本刊,本刊有权授权本刊合作数据库、合作媒体等合作伙伴使用。同时,本刊支付的稿酬已包含上述使用的费用,特此声明。

《网络安全与数据治理》(原《信息技术与网络安全》)编辑部