ARM汇编语言

本文详细介绍了ARM架构中的基本指令,包括分支、算数、逻辑、比较、数据传输、状态寄存器和其他指令,以及它们的功能和用法。通过实例展示了如何进行无条件跳转、位操作、数值运算、条件判断等操作。此外,还涵盖了执行条件运算符及其意义,为理解和使用ARM汇编语言提供了全面的指导。

ARM 汇编语言

ARM基本指令

  1. 分支指令
指令功能功能
B label {f,b}移动到label, label后面的选项f、b是位于下、上侧的labelb call_kernel
BL label {f,b}和B相同,但lr中记录bl下一条指令的地址bl cache_on
BX label {f,b}带状态切换的无条件跳转
BLX label {f,b}带链接和状态切换的无条件跳转
  1. 算数运算指令
指令功能功能
ADD X Y ZX中保存Y与Z之和add r12, r12, #4*5
SUB X Y ZX中保存Y减Z之差sub pc, lr, r0
  1. 逻辑运算符
指令功能功能
BIC X Y Z在Y中解除Z中设置的位并保存到X X=Y&~Zbic r3, r3, #0x3f00
EOR X Y Z将Y和Z执行exclusive or运算并保存到X X=Y^Zeor r1, r1, r6
ORR X Y ZRd=Rn1Norr r0, r0, #0x002d
ANDX Y Z将Y和Z执行and运算的结果值保存到Xorr r0, r0, #0x002d
  1. 比较运算指令
指令功能功能
CMP X Y比较X和Y并更新状态标签cmp r1,r2
TEQ X Y检查X和Y的值是否一致teq r6, ip
TST X Y检查Y中设置的位是否全部设置到Xtst r1, r1
  1. 数据传输指令
指令功能功能
LDR X Y Z将Y+Z的地址中保存的值加载到Xldr r1, [r6, #0]
LDM X{!} Rx-Ry从Rd中保存的地址依次取值并读入rx~ry的寄存器,每次都更新地址,后面有!时x的值会更新ldmfd sp!, {r4-r7, r9, pc }
STM X{!} Rx-Ry将x指向的地址的值依次写入寄存器列表Rx-Ry,后面有!时x的值不会更新stmfd sp!, {r4, r5, r6, r7}
  1. 状态寄存器指令
指令功能功能
MRS X CPSR将CPSR的值读入Xmsr r2,cpsr
MSR CPSR X检查X和Y的值是否一致mrs cpsr, r2
  1. 其他指令
指令功能功能
ADR X label将label的地址保存到Xadr r12, proc_types
MOV X Y将Y的值保存到Xmov r0, r1
  1. 执行条件运算符
后缀标签含义
eqz=1相等
nez=0不相等/标志
hic=1,z=0无符号数大于
cs/hsc=1无符号数大于或等于
cc/loc=0无符号数小于
lsc=0,z=1无符号数小于或等于
gtz=0,n=v有符号数大于
gen=v有符号数大于或等于
ltn!=v有符号数小于
lez=1,n!=v有符号数小于或等于
min=1负数
pln=0整数或0
vsv=1溢出
vc没有溢出
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值