【ARM汇编】ARM 指令集和Thumb 指令集

关于指令集

指令集是汇编的基础,是芯片的架构,不懂指令集看着汇编就只能干瞪眼了,所以把ARM指令集全都记录下来做个笔记。

可能会和WIN32的指令集有出入,比如WIN32中MOV可以把数据从内存中加载到寄存器中去,但在ARM的RISC结构中,MOV只能将数据从寄存器移动到寄存器,WIM32的看小甲鱼的视频。说白了X86是复杂指令集(CISC),ARM是精简指令集(RISC)。
复杂指令集是将很多操作集成起来,精简是可以很细节的去处理。
51的看刘健老师
ARM汇编初学者视频

ARM指令集

ARM指令是32位的,而Thumb指令时16位的。
如果在1K的存储空间中,可以放32条ARM指令,就可以放64条Thumb指令,因此在存放Thunb指令时,代码密度高。

助记符操作
MOV移动
ADD
SUB
RSB反减
CMP比较
TST测试
AND逻辑与
EOR逻辑或
LSL逻辑左移
ASR算术右移
MUL有符号长乘
SMUL
SMLAL有符号长累乘
MSR移入状态寄存器
B分支
BX分支与交换
LDR载入字
LDRH载入半字
LDRB载入字节
LDRSH载入有符号半字
LDRSB载入有符号字节
LDM载入乘
LDRBT转化载入寄存器字节
LDRT转化载入寄存器
MCR移入协处理器
LDC协处理器数据处理
MVN移非
ADC带进位加
SBC带进位减
RSC带进位反减
CMN比较取反
TEQ测试等价
BIC位清零
ORR逻辑 ( 包括 ) 或
MLA累乘
UMULL无符号长乘
UMLAL无符号长累乘
MRS由状态寄存器移出
BL分支与链接
SWI软件中断
STR恢复字
STRH恢复半字
STRB恢复字节
STRBT转化保存寄存器字节
STRT转化保存寄存器
STM多路保存
SWPB交换字节
MRC由协处理器移出
STC由协处理器保存

Thumb指令集

PS:和C不同,在汇编中可不区分大小写。

助记符操作
MOV移动
ADD
SUB
CMP比较
TST测试
AND逻辑与
EOR逻辑或
LSL逻辑左移
ASR算术右移
MUL
B分支
BX分支与交换
LDR载入字
LDRH载入半字
LDRB载入字节
LDRSH载入有符号半字
LDMIA载入乘
PUSH将寄存器推入堆栈
MVN移非
ADC带进位加
SBC带进位减
CMN比较取反
NEG去反
BIC位清零
ORR逻辑 ( 包括 ) 或
LSR逻辑右移
ROR右转
BL分支与链接
SWI软件中断
STR保存字
STRH保存半字
STRB保存字节
LDRSB载入有符号字节
STMIA多路保存
PUSH 将寄存器推入堆栈 POP将寄存器推出堆栈

Thumb不是完整的指令集
Thumb是ARM 指令集的一个子集
Thumb指令可以看做是ARM指令压缩形式的子集,是针对代码密度【1】的问题而提出的,它具有16为的代码密度。Thumb不是一个完整的体系结构,不能指望处理程序只执行Thumb指令而不支持ARM指令集。因此,Thumb指令只需要支持通用功能,必要时,可借助完善的ARM指令集,例如:所有异常自动进入ARM状态。

在编写Thumb指令时,先要使用伪指令CODE16声明,而且在ARM指令中要使用BX指令跳转到Thumb指令,以切换处理器状态。编写ARM指令时,可使用伪指令CODE32声明。

Thumb 指令集分为:

  • 分支指令
  • 数据处理指令
  • 载入与保存指令
  • 批量载入与保存指令
  • 异常产生指令

Thumb模式下,R0~R7八个通用功能寄存器有效。与执行ARM指令时的R0~R7相同。 某些 Thumb 指令还访问程序计数器 (ARM 寄存器 15)、链接寄存器 (ARM 寄存器 14) 及
堆栈指针 (ARM 寄存器 13)。其他指令对 ARM 寄存器 8 ~ 15 的访问有所限制。

简单的指令集操作

mov ax,18		;18送入AX	ax=18
mov ah,78		;78送入AH		ah=78
add ax,8		;将寄存器AX中的数值加上8	ax+=8
LDR R0,0x1234	;0x1234这个地址存放到R0中

初学汇编,内容仅为笔记和参考。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

创客阿蛋

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值