ARM数据处理指令中的立即数问题
扫描二维码
随时随地手机看文章
CPU的手册上,数据处理指令格式如上:
立即数是Operand2部分,占据了机器码的低12位。其中最低8位称为immed_8,高4位称为rotate_imm。
立即数的数值计算方法:=immed_8 循环右移 (2 * rotate_imm)。
就是说,一个立即数0x56000000,循环左移,如果可以得到一个用8位位图表示的数,则该立即数0x56000000是一个合法的立即数;否则,该立即数不合法。
高四位:2^4=16,要想表示移位范围为0-31,则每次最少移动2位,即,右移的最小单位为2.这样,2*16就可以表示最多32位的移动。