赞
踩
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
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。