• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

ARM汇编语言程序结构

android 搞代码 4年前 (2022-03-02) 32次浏览 已收录 0个评论
文章目录[隐藏]

一:ARM汇编的标准

在ARM汇编中,所有标号都必须在一行顶格书写,且前面不须要增加高级语言所用的冒号,而所有的指令都不能顶格书写。ARM汇编器对标识符的大小写敏感,书写标号和指令时,字母大小写必须统一。在ARM汇编程序中,一条ARM指令、伪指令或寄存器名,能够全副为大写字母,也能够全副为小写字母,但不能大小写混合编写应用。正文应用“;”(分号),正文内容由“;”(分号)开始到此行完结,正文能够在一行的顶格书写。

规范的ARM指令格局为:[标号] <指令|条件|S> <操作数>[;正文]
源程序中容许有空行,适当的插入空行能够进步源代码的可读性。如果单行太长,能够应用字符“\”将其分行,“\”后不能有任何字符,包含空格和制表符等等。对于变量的设置,常量的定义,其标识符必须在一行的顶格书写。

汇编指令正确的例子和谬误的例子如下:

正确的例子:

谬误的例子:

二:符号

ARM 汇编中,符号能够代表地址、变量、数字常量,当符号代表地址时又称为标号,符号就是变量的变量名、数字常量的名称、标号,符号的命名规定如下:

1.符号由大小写字母、数字以及下划线组成;

2.除部分标号以数字结尾外,其它的符号不能以数字结尾;

3.符号辨别大小写,且所有字符都是有意义的;

4.符号在其作用域范畴内是惟一的;

5.符号不能与零碎外部或零碎预约义的符号同名;

6.符号不与指令助记符、伪指令同名。

三:常量

常量有数字常量、字符常量、布尔常量三种。

1.数字常量有三种示意形式:

十进制数,如:12,5,876,0;

十六进制数,如:0x4387,0xFF0, 0x1;

n 进制数,用n-XXX 示意,其中n 为2~9,XXX 为具体的数。如2-010111,8-4363156等。

2.字符常量

字符常量由一对单引号及两头字符串示意,规范C 语言中的本义符也可应用。如果须要蕴含双引号或$,必须应用""""和$$代替。
例如:Hello SETS "Hello World!"
Errorl SETS "The parameter ""VFH""error$$2"

3.布尔常量
布尔常量的逻辑真为{TRUE},逻辑假为{FALSE}。
例如:testno SETS {FALSE}

四:指令的根本格局及阐明

ARM是指令的根本格局为:

<opcode> {<cond>} {s} <Rd>, <Rn> {,<operand2>}
其中<>号内的项是必须的,{}号内的项是可选的。

各项阐明如下:

opcode: 指令助记符

cond: 执行条件

s: 是否影响CPSR寄存器的值

Rd: 指标寄存器

Rn: 第一个操作数的寄存器

operand2: 第二个操作数

条件码“cond”的应用能够实现高效的逻辑操作(节俭跳转和条件语句),进步代码效率。所有的ARM指令都能够条件执行,而THUMB指令只有B(跳转)指令具备条件执行性能。如果指令不表明条件代码,将默认为无条件(AL)执行。

五:ARM指令条件域

ARM指令个别分为5个域:

第一个域是跟条件执行相干的cond,即条件码域;

第二个域是指令代码域,即opceode;

第三个域是地址基址Rn,即第一个操作数,为寄存器

第四个域是指标或源寄存器Rd;

第五个域是地址偏移或操作寄存器,操作数区,即Op2;

上述指令的5个域为:0000 0010 1001 0001 0000 0000 0000 1000
条件的指令执行中,cond有4位,共16种组合,跟CPSR配合决定指令是否执行,如表2.1所示。

例如:指令ADDEQ R4,R3,#1,带EQ标记位,只有CPSR当中的Z地位才执行该指令。

其中,条件后缀和S后缀的关系如下:

1.如果既有条件后缀又有S后缀,则书写时S排在前面,如ADDEQS R1,R0,R2该指令在Z=1时执行,将R0+R2的值放入R1,同时刷新条件标记位。

2.条件后缀是要测试条件标记位,而S后缀是要刷新条件标记位。

3.条件后缀要测试的是执行前的标记位,而S后缀是根据指令的后果扭转条件标记。

小结:

通过本节课的学习,咱们理解了在ARM汇编的标准、指令条件域以及ARM指令的格局:<opcode> {<cond>} {s} <Rd>, <Rn> {,<operand2>},其中<>号内的项是必须的,{}号内的项是可选的。


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:ARM汇编语言程序结构

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址