EDA365电子论坛网
标题:
MOV中的 8位图立即数,是怎么一回事?
[打印本页]
作者:
Maskman
时间:
2022-9-28 09:37
标题:
MOV中的 8位图立即数,是怎么一回事?
MOV中的 8位图立即数,是怎么一回事 0xF0000001是怎么来的A:是循环右移,就是一个 0—255 之间的数左移或右移偶数位的来的,也就是这个数除以 4一直除, 直到在 0-255的范围内它是整数就说明是可以的!
5 m. _# p; W+ j0 X
作者:
CRAZY_argentina
时间:
2022-9-28 11:02
8位数(0-255)循环左移或循环右移偶数位得到的,F0000001既是 0x1F循环右移4位,符合规范,所以是正确的.
8 Z$ l; A4 e3 G5 y( ^. U7 q0 M7 p
这样做是因为指令长度的限制,不可能把 32位立即数放在32位的指令中.
' L$ ?% F& y( l# V8 c0 c- v- I
移位偶数也是这个原因.可以看一看ARM体系结构(ADS自带的英文文档)的相关部分。
作者:
STGing
时间:
2022-9-28 11:18
判断 0X20000018 是不是立即数:
5 D5 @9 |: S& a4 Z
1 :把数据转换成二进制
$ a4 x8 t, Z7 n- u4 |
0010 0000 0000 0000 0000 0000 0001 1000
- p5 x4 [ b$ o x' p* Q
|__________________________|共24个0
" D, E6 f& E* `. B8 {
2:数 1 共 3 个 1 走第三步
! h- s7 n* ^/ \: u+ E% b
3:最大连续 24 个 0,循环左移4位
' q+ Y* H/ o2 V0 ^
0000 0000 0000 0000 0000 0001 1000 0010
- q( k W2 }. C
4:找最高位 1,去掉前面的最大的偶数个 0
) m4 n7 z' W- y1 d0 l) f4 ?/ v
01 1000 0010
2 e- k' v1 v$ Y q% R0 C2 W; z
5:找到最低位的 1,去掉后面最大偶数个 0
8 V) m* h: w. ^$ [/ c; D; e
01 1000 0010
6 A! q6 a8 C7 M/ D3 c ]: C2 t
6:数剩下的位数:共 10 位,不是立即数
欢迎光临 EDA365电子论坛网 (https://bbs.eda365.com/)
Powered by Discuz! X3.2