微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > ARM 一些特殊符号

ARM 一些特殊符号

时间:11-11 来源:互联网 点击:

常为该变量作用范围的名称(用ROUT伪操作定义的)。

局部变量引用的语法格式如下:

%{F|B}{A|T}N{routname}

其中,N为局部变量的数字号。

routname为当前作用范围的名称(用ROUT伪操作定义的)

%表示引用操作

F指示编译器只向前搜索

B指示编译器只向后搜索

A指示编译器搜索宏的所有嵌套层次

T指示编译器搜索宏的当前层次

如果F和B都没有指定,编译器先向前搜索,再向后搜索如果A和T都没有指定,编译器搜索所有从当前层次到宏的最高层次,比当前层次低的层次不再搜索。

如果指定了routname,编译器向前搜索最近的ROUT伪操作,若routname与该ROUT伪操作定义的名称不匹配,编译器报告错误,汇编失败。

arm汇编语言中的表达式

表达式是由符号、数值、单目或多目操作符以及括号组成的。

1、字符串表达式

字符串表达式由字符串、字符串变量、操作符以及括号组成。字符串的最大长度为512字节,最小长度为0.下面介绍字符串表达式的组成元素。

字符串:由包含在双引号内的一系列的字符组成。字符串的长度受到arm汇编语言语句长度的限制。当在字符串中包含美元符号$或者引号"时,用$$表示一个$,用""表示一个"。

字符串变量:用伪操作GBLS或者LCLS声明,用SETS赋值。

操作符:

(1)LEN:返回字符串的长度

:LEN:A

其中,A为字符串变量(2)CHR:可以将0~255之间的整数作为含一个ASCII字符的字符串。当有些ASCII字符不方便放在字符串中时,可以使用CHR将其放在字符串表达式中。

:CHR:A

其中,A为某一字符的ASCII值(3)STR:将一个数字量或者逻辑表达式转换成串。对于32位的数字量而言,STR将其转换成8个十六进制数组成的串;对于逻辑表达式而言,STR将其转换成字符串T或者F

:STR:A

其中,A为数字量或者逻辑表达式

(4)LEFT:返回一个字符串最左端一定长度的子串

A:LEFT:B

其中,A为源字符串,B为数字量,表示LEFT将返回的字符个数

(5)RIGHT:返回一个字符串最右端一定长度的子串

A:RIGHT:B

其中,A为源字符串,B为数字量,表示RIGHT将返回的字符个数(6)CC:用于连接两个字符串。

A:CC:B

其中,A为第1个源字符串。B为第2个源字符串。CC操作符将字符串B连接在字符串A的后面。

2、数字表达式

数字表达式由数字常量、数字变量、操作符和括号组成

数字变量用伪操作GBLA或者LCLA声明,用SETA赋值,它代表一个32位的数字量。

操作符:

(1)NOT:按位取反

:NOT:A

其中,A为一个32位数字量

(2)+、—、×、/及MOD算术操作符

A+B,A-B,A×B,A/B

A:MOD:B表示A除以B的余数

(3)ROL,ROR,SHL,SHR移位

A:ROL:B将整数A循环左移B位

A:SHL:B将整数A左移B位

(4)AND、OR及EOR按位逻辑操作符

A:AND:B将数字表达式A和B按位作逻辑与操作

3、基于寄存器和基于PC的表达式

基于寄存器的表达式表示了某个寄存器的值加上(或者减去)一个数字表达式

基于PC的表达式表示了PC寄存器的值加上(或减去)一个数字表达式。基于PC的表达式通常由程序中的标号与一个数字表达式组成。相关的操作符:(1)BASE:返回基于寄存器的表达式中的寄存器编号。

:BASE:A A为基于寄存器的表达式

(2)INDEX:返回基于寄存器的表达式相对于其基址寄存器的偏移量。

:INDEX:A A为基于寄存器的表达式

(3)+、﹣:正负号,可以放在数字表达式或者基于PC的表达式前面。

+A(﹣A)A为基于PC的表达式或者数字表达式

4、逻辑表达式

由逻辑量、逻辑操作符、关系操作符以及括号组成,取值范围为{FLASE}和{TRUE}关系操作符:用于表示两个同类表达式之间的关系。关系操作符和它的两个操作数组成一个逻辑表达式,其取值为{FALSE}或{TRUE}

如A=B表示A等于B

A/=B,A<>B表示A不等于B逻辑操作符:进行两个逻辑表达式之间的基本逻辑操作。操作的结果为{FLASE}或{TRUE}

:LNOT:A逻辑表达式A的值取反

A:LAND:B逻辑表达式A和B逻辑与

5、其他的一些操作符

(1)?:返回定义符号A的代码行所生成的可执行代码的字节数?A其中,A为一个符号

(2)DEF:判断某个符号是否已定义

:DEF:A

如果符号A已经定义,上述结果为{TRUE},否则为{FLASE}

(3)SB_OFFSET_19_12

:SB_OFFSET_19_12:label 其中,label为一个标号

返回(label-SB)的bits[19:12]

(4)SB_OFFSET_11_0

:SB_OFFSET_11_0:label

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top