arm的汇编指令精选合辑
odel,CRd,CRn,CRm{,opcode2}
CDP2 CP#,opcodel,CRd,CRn,CRm{,opcode2}
其中:
CP# 指令操作的协处理器名。标准名为pn,n为0~15范围内的整数。
Opcode1 协处理器的特定操作码。
CRzn,CRm,CRn 协处理器寄存器。
Opcode2 可选的协处理器特定操作码。
注释:
CDP2指令设置条件码为0b1111,为协处理器设计者提供额外的opcode空间。CDP2指的是适用于ARM v5指令系统及以上版本。
例:
CDP p1,10,C1,C2,C3 ;协处理器1中的处理器C2和C3完成操作10然后
;将结果放在C1中
CDPEQ p2,5,C1,C2,C3 ;如果Z位置1,那么协处理器2中的C2和C3完成
;操作5(子操作2),然后将结果放在C1中
2 LDC和STC指令
功能:在存储器和协处理器之间传送数据。
格式:
(1) 零偏移格式
LDC|STC{《条件码》}{L}《CP#》,CRd,[Rn]
(2) 前变址格式
LDC|STC{《条件码》}{L}《CP#》,CRd,[Rn,#offset]{!}
LDC2|STC2{《 CP#》》},CRd, [Rn,#offset]{!}
(3) 后变址格式
LDC|STC{《条件码》}{L}《CP#》,CRd,[Rn],#offset
LDC2|STC2{《 CP#》》},CRd, [Rn],#offset
其中:
L 可选后缀,指明是长整数传送。
CP# 指令操作的协处理器名。标准名为pn,其中n为0~15范围内的整数。
CPd 用于读取或存储的协处理器寄存器。
Rn 存储器基址寄存器。若指定R15,则使用的值是当前指令地址加8。
Offset 偏移量,其值必须为4的整倍数,范围在0~1020之间。
注释:
LDC2和STCC2指令设置条件码条件码为b1111,为协处理器设计者提供额外的opcode空间。LDC2和STC2指令适用于ARM v5指令系统及以上版本。注意:LDC2和STC2始终是无条件的。
例1:
LDC p6,CR1,[R4] ;将存储器中的内容取至协处理器6
;寄存器CR1中R4为所以内容地址
例2:
LDC p6,CR4,[R2,4] ;将存储器中的内容取至协处理器6
;寄存器CR4中R2+4为所以内容地址
例3:
STC p8,CR8,[R2,#4]! ;将协处理器8寄存器CR8中的内容存
;至存储器中R2+4为所存内容的地址
;然后,R2=R2+4
例4:
STC p6,CR9,[R2],#-16 ;将协处理器6寄存器CR9中的内容存
;至存储器中R2为所存内容的地址
;然后,R2=R2-16
3 MRC、MRC2、MCR和MCR2指令
功能:在协处理器与ARM寄存器之间传送数据。
格式:
(1)从协处理器传送至ARM寄存器
MRC{《条件码》}《CP#》,《Opcode1》,Rd,CRn,CRm{,《Opcode2》}
MRC2 《CP#》,《Opcode1》,Rd,CRn,CRm{,《Opcode2》}
(2)从ARM寄存器传送至协处理器
MCR{《条件码》}《CP#》,《Opcode1》,Rd,CRn,CRm{,《Opcode2》}
MRC2 《CP#》,《Opcode1》,Rd,CRn,CRm{,《Opcode2》}
本组指令格式中所有操作数的含义同(CDP和CDP2)。
注释:
MRC2和MCR2指令设置条件码为0b1111,为协处理器设计者提供额外的操作码字段。MRC2和MCR2指令适用于ARM v5指令系统及以上版本。注意:MRC2和MCR2始终是无条件的。
例1:
MRC p15,R4,C0,C2,3 ;协处理器15中的寄存器C0和C2完成
;操作5(子操作3),然后将结果传到
;CPU寄存器4中
例2:
MCR p14,1,R7,C7,C12,6 ;协处理器14在CPU寄存器7中完成
;操作1(子操作6,然后将结果传到协
;处理器14的寄存器C12中
4 MCRR和MRRC指令
功能:在2个ARM寄存器和协处理器之间进行数据传送。
格式:
MRRC{《条件码》}《CP#》,《Opcode1》,Rd,CRn,CRm
MCRR{《条件码》}《CP#》,《Opcode1》,Rd,CRn,CRm
本指令格式中所有操作数的含义同本小节第1条指令(CDP和CDP·)。MCRR和MRRC指令适用于ARM v5TE指令系统及以上版本。
3.2.7 ARM杂项指令
1 状态寄存器传送至通用寄存器类指令
功能:将状态寄存器的内容传送至通用寄存器。
格式:
MRS{《条件码》}Rd,CPSR}SPSR
其中:
Rd 目标寄存器,Rd不允许R15。
R=0 将CPSR中的内容传送目的寄存器。
R=1 将SPSR中的内容传送至目的寄存器。
注释:
MRS与MSR配合使用,作为更新PSR的读-修改-写序列的一部分。例如:改变处理器或清除标志Q。注意:当处理器在用户模式或系统模式下,一定不能试图访问SPSR
这条指令不影响条件码标志。
例:
MRS R0,CRSR ;将CPSR中的内容传送至R0
MRS R3,SPSR ;将SPSR中的内容传送至R3
2 通用寄存器传送至状态寄存器传送指令
功能:将通用寄存器的内容传送至状态寄存
- 什么是LED驱动时序?LCD背光驱动程序设计(04-26)
- LCD驱动的移植及其GUI仿真如何进行,LCD数模转换现实原理及其源代码(04-25)
- wince代码写入LCD驱动参考,数码产品怎样分别是不是LCD坏点(04-26)
- ARM微处理器助记符指令及其功能描述(04-30)
- 布线工程师如何充分“掌控”时钟信号?(02-21)
- FPGA组成、工作原理和开发流程(10-13)