您的位置:首页 > 其它

ARM---判断合法立即数

2017-10-28 10:03 183 查看
   能通过8位常数循环右移偶数位得到的数称之为合法立即数。

   循环右移:高字节的数到低字节。低字节的数到高字节。

                     例如:
01001001

                                 01是高字节(高位)

                                 01是低字节(低位)

                    循环右移1位后:10100100

                    循环右移2位后:01010010

   除了循环右移,还有算术右移,逻辑右移。都是不一样的概念。

   算术右移:把目的操作数的由高位向低位移。如果最高位是0,则空出的高位都补0. 如果最高位是1,则则空出的高位都补1.

   逻辑右移:把目的操作数的由高位向低位移。移位后空出的位都补0.

判断合法立即数的例子:

                例如:  0xF0000000

                          ob(二进制): 1111000000000000....

                          可以通过11110000循环右移8位得到原数,所以是合法立即数

                          

                 例如:   0x101

                          ob(二进制): 000100000001

                           100000001是9位常数,所以不可能通过8位常数循环右移得到,它不是个合法立即数

                例如: 0x102

                          ob(二进制): 000100000010

                          10000001是8位常数,可以通过8位常数循环右移得到,但是它是循环右移1位得到,不是循环右移偶数位得到,所以它也不是个合法立即数
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: