找回密码
 注册
关于网站域名变更的通知
查看: 277|回复: 2
打印 上一主题 下一主题

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

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2022-9-28 09:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
MOV中的 8位图立即数,是怎么一回事 0xF0000001是怎么来的A:是循环右移,就是一个 0—255 之间的数左移或右移偶数位的来的,也就是这个数除以 4一直除, 直到在 0-255的范围内它是整数就说明是可以的! + w7 {/ S3 h1 G/ }) {; ]; z0 ^

该用户从未签到

2#
发表于 2022-9-28 11:02 | 只看该作者
8位数(0-255)循环左移或循环右移偶数位得到的,F0000001既是 0x1F循环右移4位,符合规范,所以是正确的.
# ~0 x6 H0 d, \# P# q0 Q  I0 N1 F这样做是因为指令长度的限制,不可能把 32位立即数放在32位的指令中.$ u/ i# M% z6 J5 H  x* h
移位偶数也是这个原因.可以看一看ARM体系结构(ADS自带的英文文档)的相关部分。

该用户从未签到

3#
发表于 2022-9-28 11:18 | 只看该作者
判断 0X20000018 是不是立即数:
' H' D- W; e4 h* K' Q$ r7 Y2 m1 :把数据转换成二进制
% z# Q) }$ T7 g. w0 U3 d& V5 {& i  0010 0000 0000 0000 0000 0000 0001 1000
9 w. ?3 i  ]# y2 o8 ^# ~  |__________________________|共24个0
2 d6 @3 l: q# K1 F2:数 1 共 3 个 1 走第三步! o+ G2 c7 B, L# m" a
3:最大连续 24 个 0,循环左移4位9 @: w2 M% T; G: b
0000 0000 0000 0000 0000 0001 1000 0010" \" l- G; l8 H+ ?) l; I! O  N0 ~
4:找最高位 1,去掉前面的最大的偶数个 0
, \+ J$ }- u1 k- P, E6 N 01 1000 0010
+ K* Z5 f$ X" [' z, Q0 [1 e5:找到最低位的 1,去掉后面最大偶数个 0
( U0 {* k6 Y+ h 01 1000 0010; S5 ?$ l$ C1 s9 |% a6 M# g4 T
6:数剩下的位数:共 10 位,不是立即数
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-11-23 22:18 , Processed in 0.140625 second(s), 23 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表