谁知道MOV r0, #0x3FFFC0有没有错误 为什么
谁知道MOV r0, #0x3FFFC0有没有错误 为什么
是ARM指令吗?
ARM里的指令长度为32,其中MOV指令的第12~15们是第一操作数Rn,即寄存器编号,第0~11位是第二操作数<shifter_operand>,即立即数。这样的立即数必需满足是由一个8位的常数循环右移偶数位得到,其中循环右移的位数由一个4位的二进制数的两倍表示,这样就用了12位的第二操作数。
0x3fffc0不能满足上述条件,所以错误,应改成伪指令: ldr r0, =0x3fffc0