ARM汇编指令

ARM指令的一般编码格式:
在这里插入图片描述
cond: 指令执行的条件编码
opcode: 指令操作符编码
S: 决定指令操作是否影响CPSR的值
Rd: 目标寄存器编码
Rn: 第一个操作数的寄存器编码
shifter_operand: 第二个操作数
一条典型的ARM指令语法格式如下:
在这里插入图片描述
条件码如下:
在这里插入图片描述

ARM指令分六类:跳转指令、数据处理指令、PSR传送指令、内存访问指令、协处理器指令、异常中断指令。

跳转指令:
B: 跳转指令
BL:带返回的跳转指令
BLX:带返回和状态切换的跳转指令
BX:带状态切换的跳转指令

数据处理指令:
MOV:数据传送指令
MVN:数据求反传送指令
ADD:加法指令
ADC:带位加法指令
SUB:减法指令
SBC:带位减法指令
RSB:逆向减法指令
RSC:带位逆向减法指令
AND:逻辑与操作指令
ORR:逻辑或操作指令
EOR:逻辑异或操作指令
BIC:位清除指令
TST:位测试指令
TEQ:相等测试指令
CMP:比较指令
CMN:基于相反数的比较指令

乘法指令
MUL: 32位乘法指令
MLA:32位带加数的乘法指令
SMULL:64位有符号乘法指令
SMLAL:64位带加数的有符号乘法指令
UMULL:64位无符号乘法指令
UMLAL:64位带加数的无符号乘法指令

杂类的算术指令:
CLZ: 用于计算操作数最高端0的个数

PSR传送指令:
MSR:通用寄存器到PSR的传送指令
MRS:PSR到通用寄存器的传送指令
内存访问指令:
LDR:字数据读取指令
LDRB: 字节数据读取指令
LDRBT:用户模式的字节数据读取指令
LDRH: 半字数据读取指令
LDRSB: 有符号的字节数据读取指令
LDRSH: 有符号的半字数据读取指令
LDRT: 用户模式的字数据读取指令
STR:字数据写入指令
STRB: 字节数据写入指令
STRBT: 用户模式字节数据写入指令
STRH: 半字数据写入指令
STRT: 用户模式字数据写入指令

批量内存访问指令:
LDM: 将数据从连续的内存单元中读取到指令中指定的寄存器列表中的各寄存器
STM: 将指令中各寄存器中的数值写入到连续的内存单元中
其模式有8种:前四种用于数据块传送,后四种用于堆栈操作
IA:每次传送后地址增加
IB:每次传送前地址增加
DA:每次传送后地址减少
DB:每次传送前地址增加
FD:满递减堆栈
ED:空递减堆栈
FA:满递增堆栈
EA:空递增堆栈

单数据交换指令:
SWP: 字交换
SWPB:字节交换

协处理器指令:
CDP: 协处理器数据操作
LDC: 装载协处理器寄存器
MCR:从ARM寄存器传数据到协处理器寄存器
MRC:从协处理器寄存器传数据到ARM寄存器
STC: 存储协处理器寄存器

异常产生指令:
SWI: 软中断指令 产生软中断,处理器进入管理模式
BKPT: 断点中断指令 处理器产生软件断点

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值