ARM指令集中立即数寻址的范围

来源:本站
导读:目前正在解读《ARM指令集中立即数寻址的范围》的相关信息,《ARM指令集中立即数寻址的范围》是由用户自行发布的知识型内容!下面请观看由(电工技术网 - www.9ddd.net)用户发布《ARM指令集中立即数寻址的范围》的详细说明。
简介:上学期学习了一会儿ARM汇编指令,对其中立即数寻址一节有些疑惑。先看书上的一个例子:
MOV R3, #0x3A ;将十六进制数3A放到寄存器R3中。
在上面的指令中,第2个源操作数为立即数,数值可以是0~0xFF范围内的任意值。
可在平时却经常看到第2操作数大于0xFF的例子,如 MOV R3, #0x400 等等。

这是为什么呢?网上搜罗一番,果然有很多相关的讨论帖子,再加上自己的理解,大致得到了如下的结论。

ARM指令集中立即数寻址的范围

有兴趣的可以去搜一下这一个关键词,8位位图,原来我们的第2操作数就是遵循这个规律的。

以上的解释文字来自ARM Processor Instruction Set,再附上两张图片:

ARM指令集中立即数寻址的范围

ARM指令集中立即数寻址的范围

所以,我们可以这样总结:

1.判断一个数是否符合8位位图的原则,首先看这个数的二进制表示中1的个数是否不超过8个。如果不超过8个,再看这n个1(n<=8)是否能同时放到8个二进制位中,如果可以放进去,再看这八个二进制位是否可以循环右移偶数位得到我们欲使用的数。如果可以,则此数符合8位位图原理,是合法的立即数。否则,不符合。

2.无法表示的32位数,只有通过逻辑或算术运算等其它途径获得了。比如0xFFFFFF00,可以通过0x000000FF按位取反得到。

提醒:《ARM指令集中立即数寻址的范围》最后刷新时间 2024-03-14 00:50:34,本站为公益型个人网站,仅供个人学习和记录信息,不进行任何商业性质的盈利。如果内容、图片资源失效或内容涉及侵权,请反馈至,我们会及时处理。本站只保证内容的可读性,无法保证真实性,《ARM指令集中立即数寻址的范围》该内容的真实性请自行鉴别。