ARM处理器中“8位位图”的理解分析
0赞
发表于 5/23/2011 8:23:13 PM
阅读(2575)
Arm指令格式中要求常数表达式immed_8r必须对应8位位图(pattern),即常数是由一个8位的常数循环移位偶数位得到的。 引入“八位位图”的原因 ARM规定所有的指令码等长32位,前24位是指令助记符,条件码,寄存器等等,后12位是第二操作数。而第二操作数是32位,但是指令码中只剩12位了,为了能用这12位来表示32位的数就采用了“八位位图”。
“八位位图原理” 如何用12位表示32位的数?8位用来存数据,4位用来存移动的位数。 8位存数据:解释了“该常数必须对应8位位图”。 4位存移位的次数:解释了为什么只能移偶数位。4位只有16种可能值,而32位数可以循环移位32次(32种可能),那就只好限制:只能移偶数位(两位两位地移,好像一个16位数在移位,16种移位可能)。这样就解决了能表示的情况是实际情况一半的矛盾。
判断是否符合“八位位图”的较快方法 看第一个“1”和最后一个“1”相距的距离如果大于8位则一定不是八位图,然后再看移动偶数位能不能把这些数都移到第八位中,如果可以就是“八位位图”。
