您的位置 首页 系统

常用ARM汇编指令

在嵌入式开发中,汇编程序常常用于非常关键的地方,比如系统启动时初始化,进出中断时的环境保护,恢复等对性能有要求的地方。ARM指令集可

嵌入式开发中,汇编程序常常用于十分要害的当地,比方系统启动时初始化,进出中止时的环境保护,康复等对功能有要求的当地。

ARM指令集能够分为六大类,分别为数据处理指令、Load/Store指令、跳转指令、程序状况寄存器处理指令、协处理器指令和反常发生指令。
ARM指令运用的根本格局如下:
〈opcode〉{〈cond〉}{S}〈Rd〉,〈Rn〉{,〈operand2〉}
opcode 操作码;指令助记符,如LDR、STR等。
cond 可选的条件码;履行条件,如EQ、NE等。
S 可选后缀;若指定“S”,则依据指令履行成果更新CPSR中的条件码。
Rd 方针寄存器。
Rn 寄存第1操作数的寄存器。
operand2 第2个操作数

arm的寻址方法如下:
当即寻址
寄存器寻址
寄存器直接寻址
基址加偏址寻址
仓库寻址
块复制寻址
相对寻址
这儿不作具体描绘,能够查阅相关文档。

数据处理指令
Load/Store指令
程序状况寄存器与通用寄存器之间的传送指令
搬运指令
反常中止指令
协处理器指令


在S3C2410、S3C2440的数据手册中对各种汇编指令有具体的描绘;这儿只对较常见的作写介绍。
1、相对跳转指令:b、bl
这两条指令的不同之处在于bl指令除了跳转之外,还将回来地址(bl的下一条指令的地址)保存在lr寄存器中。
这两条指令的可跳转规模是当时指令前后32M。

b funa
….
funa:
b funb
….
funb:
….

2、数据传送指令mov,地址读取伪指令ldr
mov指令能够把一个寄存器的值赋给别的一个寄存器,或许把一个常数赋给寄存器。
mov r1, r2

mov r1,#1024

mov传送的常数有必要能用当即数来表明。当不能用当即数表明时,能够用ldr指令来赋值。
ldr是伪指令,不是实在存在的指令,编译器会把它扩展成真实的指令;假如该常数能用“当即数”来表明,则运用mov指令,不然编译时将该常数保存在某个方位,运用内存读取指令把它读出来。
ldr r1, = 1024

3、内存拜访指令 ldr、str、ldm、stm
ldr既能够指低至读取伪指令,也能够是内存拜访指令。当他的第二个参数前面有=时标伪指令,不然表内存拜访指令。
ldr指令从内存中读取数据到寄存器,str指令把寄存器的指存储到内存中,他们的操作数都是32位的。

ldr r1, [r2, #4]
ldr r1,[r2]
ldr r1,[r2], #4
str r1 ,[r2, #4]
str r1, [r2]
str r1, [r2],#4
寄存器传送指令能够用一条指令将16个可见寄存器(R0~R15)的恣意子调集(或悉数)存储到存储器或从存储器中读取数据到该寄存器调集中。与单寄存器存取指令比较,多寄存器数据存取可用的寻址形式愈加有限。多寄存器存取指令的汇编格局如下:

LDM/STM{}Rn{!},

4、加减指令 add、sub

add r1, r2, #1
sub r1, r2, #1

5、程序状况寄存器的拜访指令msr,mrs

ARM指令中有两条指令,用于在状况寄存器和通用寄存器之间传送数据。修正状况寄存器一般是经过“读取-修正-写回”三个过程的操作来完成的。 这两条指令分别是:
状况寄存器到通用寄存器的传送指令(MRS)
通用寄存器到状况寄存器的传送指令(MSR)

其汇编格局如下:
MRS{} Rd,CPSR|SPSR
其汇编格局如下:
MSR{} CPSR_f | SPSR_f,#<32-bit immediate>
MSR{} CPSR_ | SPSR_,Rm

msr cpsr, r0
mrs r0, cpsr

6、反常中止指令
反常中止指令能够分为一下两种:
软件中止指令(SWI)
断点指令(BKPT—仅用于v5T系统)
软件中止指令SWI用于发生SWI反常中止,用来完成在用户形式下对操作系统中特权形式的程序的调用;断点中止指令BKPT首要用于发生软件断点,供调试程序用。

7、其他伪指令

.extern main
.text
.global _start
_start:

.extern 界说一个外部符号(能够是变量也能够是函数),上面的代码表明表文本文件中引证的main是一个外部函数。

.text表明下面的句子都归于代码段

.global将本文件中的某个程序标号界说为大局的,如‘_start’便是个大局函数

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

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

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

微信扫一扫关注我们

返回顶部