微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 硬件工程师文库 > arm的汇编指令精选合辑

arm的汇编指令精选合辑

时间:06-04 来源:网络整理 点击:

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 通用寄存器传送至状态寄存器传送指令

功能:将通用寄存器的内容传送至状态寄存

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top