您的位置 首页 国产IC

ARM 一些特殊符号

特殊符号对应指令含义特殊符号对应指令含义=DCB分配一片连续的字节存储单元并用指定的数据初始化DCD分配…

特殊符号对应指令意义

特殊符号对应指令意义

= DCB 分配一片接连的字节存储单元并用指定的数据初始化

&DCD 分配一片接连的字存储单元并用指定的数据初始化

% SPACE 分配一片接连的存储单元

^ MAP 界说一个结构化内存表的首地址

# FILED 界说一个结构化内存表的数据域

*EQU 为程序中的常量、标号等界说一个等效的字符称号,

! 地址更新,成果写回到Rn中,Rn不允许是R15

[ | ]相当于IFELSEENDIF

其他:

LDM中{∧}为可选后缀,当指令为LDM且寄存器列表中包括R15,选用该后缀时表明:除了正常的数据传送之外,还将SPSR复制到 CPSR。一起,该后缀还表明传入或传出的是用户形式下的寄存器,而不是当时形式下的寄存器。

TST R1,#%1 // 用于测验在寄存器R1中是否设置了最低位(%表明二进制数

n $:假如在串变量前有一个$则在汇编时编译器将用该串变量的数值替代该串变量,如:

GBLS STR1

GBLS STR2

STR1 SETS “pen.”

STR2 SETS“This is a $STR1″

编译后的成果是STR2的值为This is a pen.

假如$后是数字变量(与串变量区别),在汇编时编译器将该数字变量的数值转化成十六进制的串,然后用该十六进制的串替代$后的数字变量。

假如$后是逻辑变量,在汇编时编译器将该逻辑变量替换成它的取值(T或许F)。

假如程序中需求$,则用$$来表明,编译器将不进行变量替换。

留意:在两个竖线“|”之间的$并不表明进行变量替换,但假如“|”是在双引号内,则将进行变量替换。

B . //表明程序进入死循环。.为location counter,可在源文件中指示当时地址。该符号能够被引证或赋值。

arm汇编程序中的符号

在arm汇编语言中,符号(symbols)能够代表地址(addresse)、变量(variables)和数字常量(numeric constants)。当符号代表地址时,又称为标号(lable)。当标号以数字最初时,其效果规模为当时段(当时段没有运用ROUT伪操作时),这种标号又称为部分标号(lacal lable)。符号变量包括变量、数字常量、标号和部分标号。

1、变量

在程序中,变量的值在汇编处理过程中可能会产生改动。在arm汇编中变量有数字变量、逻辑变量和串变量3种类型。变量的类型在程序中是不能够改动的。

数字变量的取值规模为数字常量和数字表达式所能表明的数值;逻辑变量的取值规模为{true}和{flash};串变量的取值规模为串表达式能够表达的规模。

在arm汇编语言中,运用GBLA、GBLL及GBLS声明全局变量;运用LCLA、LCLL及LCLS声明部分变量;运用SETA、SETL及SETS为这些变量赋值。

2、数字常量

数字常量是32位的整数。在arm汇编语言中,运用EQU来界说数字常量。数字常量一经界说就不行修正。 进行巨细比较时,以为数字常量都是无符号数。

3、汇编时变量的替换

假如在串变量前有一个$字符,在汇编时编译器将用改串的数值来替代该串变量。

关于数字变量来说,假如该变量前面有一个$字符,在汇编时编译器将该数字变量的数值转化成十六进制的串,然后用该十六进制的串替代$字符后的数字变量。

关于逻辑变量来说,假如该逻辑变量前面有一个$字符,在汇编时编译器将该逻辑变量替换成它的取值(T或许F)

假如程序中需求字符$,则用$$来表明,编译器将不进行变量替换,而是将$$当作$.一般情况下,包括在两个竖线(|)之间的$并不表明进行变量替换。可是假如竖线(|)是在双引号内,则将进行变量替换。

运用“.”来表明变量称号的完毕。

4、标号

标号是表明程序中的指令或许数据地址的符号。依据标号的生成方法可分为3种:根据PC的标号。根据PC的标号是坐落方针指令前或许程序中数据界说伪操作前的标号。这种标号在汇编时将被处理成PC值加上(或减去)一个数字常量。常用于表明跳转指令的方针地址,或许代码段中所嵌入的少数数据。

根据寄存器的标号。根据寄存器的标号常用MAP和FIELD未界说操作,也能够该用EQU伪界说。这种标号在汇编时将被处理成寄存器的值加上(或减去)一个数据常量。常用于拜访数据段中的数据。

肯定地址。肯定地址是一个32位数据。它能够寻址2^32 -1,即直接能够寻址整个内存空间。

5、部分标号

部分标号主要在部分规模内运用。它由两部组成:最初是一个0-99直接的数字,后边紧接一个一般表明该部分变量效果规模的符号。

部分变量的效果规模一般为当时段,也能够用伪操作ROUT来界说部分变量的效果规模。

部分变量界说的语法格局如下:

N{routname},其间,N为0~99之间的数字。routname为符号,一般为该变量效果规模的称号(用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

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/bandaoti/ic/274649.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部