ARM的立即数问题,怎样才合法图中0x101和0x102为什么不合法?什么叫右移“偶数位”.2*rotate_4什么意思
0
0

1个回答

  • 首先右移“偶数位”:列子00010000 右移 2位变成 00000100,偶数是双数这个你应该懂吧.

    2*rotate_4:就是指右移的位数(如2*8、 2*1) 是由 这个算法决定的,2*rotate_4就是说结果是偶数,由于rotate_4是4位常数,所以它的取值范围是0~15,

    0x101和0x102不合法:

    其实就是看数据移动偶数位后能否变成8位常数(小于等于0xff).

    0x104:0000 0001 0000 0100 右移2位(100 0001).

    0xff:不移动已经是8位常数.

    0x101:0000 0001 0000 0001

    0x102:0000 0001 0000 0010

    这2个必须移动偶数位,无论如何移动也无法变成小于等于 0xff的值.