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

arm的汇编指令精选合辑

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

PreLoad),使用PLD指示存储系统从后面几条指令所指定的存储器地址读取,存储系统可使用这种方法加速以后的存储器访问。

  格式:

  PLD[Rn,{offset}]

  其中:

  Rn 存储器的基址寄存器。

  Offset 加在Rn上的偏移量。含义同3。2。3节第1条指令。

  注释:

  PLD指令适用于ARM v5TE指令及以上版本。

  例:

  PLD [R9,#-2481]

  PLD [R0,#av*4] ;av*4必须在汇编时求值,范围为-4095~4095内的整数

  PLD [R5,r8,Lsl#2]

  6. 内存和寄存器交换类指令

  功能:用一条指令实现在寄存器和存储器之间交换数据。

  格式:

  SWP{《条件码》}{B} Rd,Rm,[Rn] ;((Rn))→Rd,Rm→Rn

  ;n≠m,d

  其中:

  B 可选后缀。若有B,则交换字节;否则,交换32位字。

  Rd ARM寄存器。数据从存储器读取到Rd。

  Rm ARM寄存器。Rm的数据存储到存储器。Rm可以与Rd相同。Rn必须与Rd和Rm不同。

  注释:

  对非字对准地址的处理同LDR和STR指令。

  例:

  ADR R0,SEMAPHORE

  SWPB R1,R1,[R0] ;交换字节

  3.2.4 ARM数据处理类指令

  大多数ARM通用数据处理有一个灵活的第2操作数(flexi second operand)。在每一个指令的格式中以"operand2"表示。

  第2条操作数有如下2种可能的格式:

  (1)#immed_8r

  常量的表达式。常量必须对应于8位位图(pattern0。该位图在32位字中,被循环移位偶数位(0,2,4,8,…,26,28,30)。合法常量:0xFF、0xFF000、0xF0000000F。非法常量:0x101、0xFF04、0xFF003、0xFFFFFFFF。

  (2)±Rm {,shift}

  Rm 存储第2操作数ARM寄存器。可用各种方法对寄存器中的位图进行移位或循环移位。在指令操作的结果用作第2操作数,但Rm本身不变。

  Shift Rm的移位方法,可以是下面的任何一种:

  ASR n 算术右移n位(1≤n≤32)。

  LSL n 逻辑左移n位(0≤n≤31)。

  LSR n 逻辑右移n位(1≤n≤32)。

  ROR n 循环右移n位(0≤n≤32)。

  RRX 带进位的循环右移1位。

  Type Rs 其中:Type ASR、LSR、ROP中的种;

  Rs 提供移位量的ARM寄存器,仅使用于最低有效字节。

  ASR、LSL、LSR、ROP和RRX的详细说明如下:

  ① ASR

  若将Rm中的内容看作是有符号的补码整数,那么算术右移(ASR,ArithmeTIc Shift Right)n位,即Rm中的内容除以 。将原来的位拷贝到寄存器左边的n位中(即空出的最高补符号位),见图3-3(a)。

  ② LSR和LSL

  若将Rm中内容看作是无符号整数,则逻辑右移(LSR,Logical Shift Right)n位,即Rm中的内容除以 ,寄存器左边的n位置0,见图3-3(b)。

  若将Rm中内容看作是无符号整数,则将逻辑左移(LSR,Logical Shift Left)n位,即Rm四的内容乘以 ,可能会出现溢出且无警告,寄存器右边的n 位置0,见图3-3(b)。

  ③ ROR

  循环右移(ROR,Rotate Right)n位,把寄存器内容循环右移,见图3-3(c)。

  ④ RRX

  若将Rm中内容看作是无符号整数,则带进位右环移n位,寄存器左边的n位置0,见图3-3(d)。

  图3-3移位操作过程

  1 数据运算类指令

  功能:完成数据在寄存器中的运算,这些运算包括32位数据的算术、位操作,其中某一个操作数可以经过移位或循环运算。

  格式:

  《操作码》{《条件码》}{S}Rd,Rn,Operand2

  操作码 包括ADD、SUB、RSB、ADC、SBC、RSC、AND、ORR、EOR、BIC、MOV、MVN、CMP、CMN、TST和TEQ指令。

  其中:

  S 可选后缀。若指定S,则根据操作结果更新条件标志(N、Z、C和V)。

  Rd ARM结果寄存器。

  Rn 存储第1操作数的ARM寄存器。

  Operand 第2操作数。详细说明请见3.2.4节第2操作数说明。

  ARM的数据运算类指令用法如表3-3所示。

  表3-3 ARM运算类指令

  注释:

  (1) 条件码标志

  若指定S,那么ADD、SUB、RSB、ADC、SBC、RSC指令根据结果更新标志N、Z、C和V。CMP、CMN、TST和TEQ指令不需S。注意:减法(含比较)够减时,C=1。而AND、OPR、EOP、BIC、MOV和MVN指令将:①根据结果更新标志N和Z;②计算Operand2时更新标志C;③不影响V标志。

  (2) R15的使用

  ADD、SUB、RSB、ADC、SBC、RSC、AND、ORR、EOR、BIC、MOV和MVN指令将R15作为Rn使用,那么使用的值是指令的地址加8。

  若将用R15作为Rd,则

  l执行转移到结果对应的地址。

  l若后缀"S",则将当前模式的SPSR拷贝到CPSR。可以使用这点从异常返回。

  在有寄存器控制移位的任何数据处理指令中,不能将R15作为Rd或任何操作数来使用。

CMP、CMN、TST和TEQ指令若

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

网站地图

Top