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

arm的汇编指令精选合辑

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

  《操作码》包括:QADD、QSUB、QDADD和QDSUB指令。

  其中:

  Rd 结果寄存器。

  Rm,Rn 操作寄存器。

  注释:

  饱和运算是DSP指令所特有的功能,对加/减法指令的结果做了如下修改:

  (1) 如果加/减法指令的结果在- ~ -1之间,饱和运算的结果取加/减法指令的结果。

  (2) 如果加/减法指令的结果大于 -1,饱和运算的结果取最终结果为 -1。

  (3) 如果加/减法指令结果小于- ,饱和运算的结果取最终结果为时尚- 。

  QDADD和QDSUB指令计算SAT(Rm+SAT(Rn*2)),饱和可发生在加倍操作,加法上,或两咱情况下同时发生。或饱和仅发生在加倍操作上,则标志Q置位,但最后结果是不饱和的。SAT意为饱和运算。

  这些指令不影响标志N、Z、C和V。若出现饱和,则置位Q标志。可使用MRS指令来读Q标志的状态。注意:即使是饱和不出现,这些指令也从不清除Q标志。使用MSR指令清除Q标志。

  QADD、QSUB、QDADD和QDSUB指令适用于ARM v5TE指令系统及以上版本。

  例:

  QADD R0,R1,R9 ;SAT(R1+R9)→R0

  QDSUBLT R9,R0,R1 ;SAT(R0-SAT((R9)*2))→R9

  3.2.5 ARM转移类指令

  ARM转移类指令完成循环、调用子程序和从ARM状态转向Thumb状态等功能,包括B、BL、BX和BLX指令。

  1 转移/转移带链接类指令

  功能:B、BL指令完成当前执行指令地址的转移,偏移地址量可以达到32M,BL指令可以把转移指令后第1条指令的地址放进链接寄存器R14中完成连接作用,通常用来完成子程序的调用。

  转移地址通常由24位有符号数组成,由于指令地址的代位为00,故可进行2位的左移运算,因此总的偏移量达到±32M。

  格式:

  B{L}{《条件码》}《Label》

  其中:

  Label 程序相对偏移表达式。

  注释:

  BL(Branch and Link)指令将下一条指令的地址拷贝到R14(LR,链接寄存器)并引起处理器转移到Label。BL指令(L=1),等价于先把(PC)→R14,再(PC)+offset→PC.

  机器级的B和BL指令限制在当前指令的± (±32M)字节范围内。但是,即使Label走超出了该范围,汇编可以使用这些指令。

  例1:条件转移。

  CMP R0,35 ;如果R0小于5

  BLT SUB1 ;则转SUB1

  BGE SUB2 ;否则转SUB2

  例2:程序调用。

  BL SUB ;调用子程序SUB

  … ;返回点

  SUB … ;子程序入口

  MOV PC,R14 ;执行完返回

  例3:执行循环。

  MOV R0,#10 ;设置循环次数

  LOOP …

  SUBS R0,#1 ;循环次数减1

  BNE LOOP ;如果循环次数不为0,继续循环

  … ;否则结束循环

  2 转移交换、转移带链接和交换指令BX,BLX

  功能:BX、BLX指令用来支持者Thumb指令集,可以全处理器由ARM指令转向Thumb指令或者由于某种原因Thumb指令返回到执行ARM指令。

  格式:

  (1)B{L}X{《条件码》}寄存器Rm

  (2)BLX《Label》

  其中:

  RM 含有转移地址的寄存器。Rm的位[0]不用来作为地址的一部分。若Rm的位[0]为1,则指令将CPSR中的标志T置位,且将目标地址的代码解释为Thumb代码。若Rm的位[0]为0,则位[1]就不能为1。

  注释:

  在指令格式中,寄存器Rm中可以存放转移地址的值,如果Rm中的第0位为1,处理器将Thumb指令;如果为0,执行ARM指令。

  在指令格式2中偏移地址量的计算与B或BL指令相同。

  BLX指令有如下用法:

  l将下一条指令的地址拷贝到R14中(LR,链接寄存器)。

  l转移到Label或Rm中的地址。

  l若下面的两条中的任何一条成立,则指令集切换到Thumb,即

  -Rm的位[0]为1;

  -使用"BLX Label"形式。

  机器级的"BLX Label"指令不能转移当前指令±32MB范围之外的地址BLX指令格式1可以是条件或者无条件执行,而指令格式2是无条件执行。

  例1:无条件转移。

  BX R0 ;按R0内容转移

  ;如果R[0]为1,转Thumb状态

  例2:Thumb子程序调用。

  CODE32 ;ARM代码

  …

  BLX TSUB ;Thumb代码执行

  TSUB … ;Thumb指令TSUB子程序

  BX R14 ;返回ARM代码

  3.2.6 ARM协处理器类指令

  ARM协处理器指令完成与协处理器有关的操作,如协处理器内部寄存器之间的数据传送、协处理器与存储器之间的数据传送、协处理器与CPU寄存器之间的数据传送。这些指令依赖于使用特写的协处理器。协处理器设计者可以自由地按需要设计处理器的功能,而且这些指令通常借助于汇编器。

  1CDP和CDP2指令(CDP,Coprocessor Data operaTIon)

  功能:完成协处理器寄存器数据操作。

格式:CDP{条件码} CP#,opc

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

网站地图

Top