数据处理指令

MOVE指令:语法<指令>{<cond>}{S}   Rd,N

      MOV   把一个32位数送到一个寄存器                     Rd=N

     MVN     把一个32位数的非送到一个寄存器             Rd=~N

桶形移位寄存器:

     ARM的一个显著特性是,可以在操作数进入ALU以前,对操作数进行指定位数的左移或者右移

    使用桶形移位寄存器可以操作5种不同的指令

    LSL    逻辑左移     logical shift left

   LSR   逻辑右移     logical shiift right

   ASR   算数右移    arithmetic

   ROR  循环右移     rotate right 

    RRX  扩展的循环右移

在移位操作中C依据最后一位被移出的数据

算数指令

  指令<cond><S>Rd,Rn,N

ADC 32位带进位加法        Rd=Rn+N+Carry

ADD 32位带加法              Rd=Rn+N

RSB 32位逆向减法          Rd=N-Rn

RSC 带进位的32位逆向减法   Rd=N-Rn-!(C)

SBC 带进位的32位减法        Rd=Rn-N-!C

SUB 32位减法                     Rd=Rn-N

逻辑指令       <指令><cond>Rd,Rn,N

AND 32位逻辑与   Rd=Rn&N

ORR32位逻辑或    Rd=Rn|N

EOR32位逻辑异或 Rd=Rn^N

BIC 逻辑位清除      Rd=Rn&~N

此类指令无需使用S后缀即可改变状态标志位

比较指令        <指令><cond>Rn,N

CMN(compare negative)取负比较 依据Rn+N的值来定

CMP(compare)比较 Rn-N

TEQ(Test Equivalence)等值测试 Rn^N

TST(test bit)位测试 依据Rn&N

乘法指令

MLA<cond><S>Rd,Rm,Rs,Rn  (multiplication with accumulate)乘累加 Rd=(Rm*Rs)+Rn

MUL<cond> <S>Rd, Rm,Rs   乘法 Rd=Rm*Rn

<指令><cond><S>RdL0 RdHi,Rm,Rs

SMLAL 长整型有符号乘累加[RdHi,RdLo]=[RdHi,RdLo]+(Rm*Rs)

SMULL长整型有符号乘 [RdHi,RdLo]=Rm*Rs

UMLAL 长整型无符号乘累加[RdHi,RdLo]=[RdHi,RdLo]+(Rm*Rs)

UMULL长整型无符号乘 [RdHi,RdLo]=Rm*Rs

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值