arm授命操作数取值范围

arm指令操作数取值范围

立即数寻址,arm指令中的立即数,由一个8bit的常数循环右移偶数位得到。

add r0,r1,#0xff

对于有互补操作的指令,编译器可以做智能的转换

mvn r1,0xffffff00-->mov r1,0xff

add r1,r1,#0xffffff00-->sub r1,r1,#0x100

寄存器移位寻址

当Rs的位置是寄存器时,不能使用PC:如果将PC寄存器用在Rn,Rd,Rm和Rs的位置上时,会产生不可预知的结果。

add r0,r1,r1,LSL,#31

ldr r0,[r1,#+-0xfff]

取值范围是0-0xfff

ldr r0,[r1,r2 LSL #31]

取值范围0-31