在ARM处理器的汇编语言中,对指令语法格局中的常数表达式有这样的规则:“该常数有必要对应8位位图,即常数是由一个8位的常数循环移位偶数位得到的。”
给定一个当即数,判别其是否合法能够分三步:首要将给定的当即数写成32位二进制的方式;然后看能不能用一个8位的二进制数包括一切含1的部分,如不能则不合法;最终看这个8位二进制数能不能循环右移偶数位得到给定的当即数,不能数则不合法。
0xff=00000000
0x104=00000000
0x101=00000000
0x102=00000000
0xfC000002
0x8000007E=10000000
总结:榜首,判别一个数是否契合8位位图的准则,首要看这个数转换成二进制后1的个数是否不超越8个,假如不超越8个,再看这n个1(n<=8)是否能一起放到8个二进制位中,假如能够放进去,再看这八个二进制位是否能够循环右移偶数位得到起先被判别的那个数值,假如能够,则此数值即为契合8位位图原理,不然,不契合。第二,用12位的编码来表明一个恣意的32位数是不可能的,只能经过循环右移八位二进制数偶数位来得到一部分32位数,其他的无法表明的32位数,只要经过其它途径获得了,比方0xffffff00,能够经过0x000000ff按位取反得到。