ARM指令及指令机器码获取

1.指令格式:
<指令>{}{S}  Rd,Rn,Operand2
任何指令后可以跟条件码,指令后可以跟s(影响cpsr)
比较指令一定影响cpsr的n,z,c,v
其他指令后加s也会影响cpsr的n,z,c,v
Rd---目的寄存器
    比较指令没有目的寄存器
Rn---第一操作寄存器
    add r0,r1,r2
    
数据搬移指令没有第一操作寄存器
mov r0,#5
mov r0,r1

 

算术指令:add adc sub sbc rsb rsc

    sbc r5,r1,r3  //r1-r3-!c---->r5  带位减法

    rsb----逆向减法,使用是因为第一操作寄存器不可以为立即数

    rsb r0,r1,#100 ----100-r1-->r0

逻辑指令:and orr eor bic

    and 位与

    orr 位或

    eor 位或与

    bic 位清除

比较指令:cmp  cmn  tst  teq

cmp r0,r1   //r0-r1,只影响cpsr的n,z,c,v,若r0>=r1,C置位cs,否则C清零cc

cmn r0,r1   //r0+r1,只影响cpsr的n,z,c,v,把一个数跟另一个数据的二进制补码相比较

tst r0,#(1<<15)  //r0 and r1(与) --->cpsr通常可以判断寄存器r0的某些位是1还是0

     //(1<<15)表示:1左移15位,1000 0000 0000 0000

teq r0,r1   //r0^r1 相等测试

数据搬移:mov  mvn

   mov r0,#1    1---》r0

   mvn r0,#1    (-1)---》r0

2.指令机器码

如何获取指令机器码

Eg:

Mov r1,#1

Mov r2,#2

mov r1,r2,lsl #2   指令机器码是0xe1a01102

r2寄存器的值逻辑左移2位到r1寄存器(r2<<2)--》r1

查看arm手册,了解到该指令的机器码构成

 

bit31-bit28:条件码1110

bit27-bit21:0001 101

bit20:指令后加s为1,否则为0

Bit19-bit16:0000

Bit15-bit12:目的寄存器的序号  0001

Bit11-bit7:左移的立即数2 --> 0 0010

Bit6-bit4:000

Bit3-bit0:第二操作寄存器的序号 0010

Bit31-bit0:

1110 0001 1010 0000 0001 0001 0000 0010--》0xe1a01102

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值