ARM技术论坛
直播中

王辉

7年用户 1300经验值
私信 关注
[问答]

MOV中的8位图立即数是怎么一回事

MOV中的 8位图立即数,是怎么一回事 0xF0000001是怎么来的A:是循环右移,就是一个 0—255 之间的数左移或右移偶数位的来的,也就是这个数除以 4一直除, 直到在 0-255的范围内它是整数就说明是可以的!

回帖(2)

王平

2022-10-13 14:13:25
8位数(0-255)循环左移或循环右移偶数位得到的,F0000001既是 0x1F循环右移4位,符合规范,所以是正确的
这样做是因为指令长度的限制,不可能把 32位立即数放在32位的指令中.
移位偶数也是这个原因.可以看一看ARM体系结构(ADS自带的英文文档)的相关部分。
举报

李俊

2022-10-13 14:13:55

判断 0X20000018 是不是立即数:
1 :把数据转换成二进制
  0010 0000 0000 0000 0000 0000 0001 1000
  |__________________________|共24个0
2:数 1 共 3 个 1 走第三步
3:最大连续 24 个 0,循环左移4位
0000 0000 0000 0000 0000 0001 1000 0010
4:找最高位 1,去掉前面的最大的偶数个 0 .
01 1000 0010
5:找到最低位的 1,去掉后面最大偶数个 0
01 1000 0010
6:数剩下的位数:共 10 位,不是立即数
举报

更多回帖

发帖
×
20
完善资料,
赚取积分