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 00102 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 t6:数剩下的位数:共 10 位,不是立即数




欢迎光临 EDA365电子论坛网 (https://bbs.eda365.com/) Powered by Discuz! X3.2