博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ARM指令集中立即数寻址的范围
阅读量:5457 次
发布时间:2019-06-15

本文共 595 字,大约阅读时间需要 1 分钟。

上学期学习了一会儿ARM汇编指令,对其中立即数寻址一节有些疑惑。先看书上的一个例子:

MOV R3, #0x3A    ;将十六进制数3A放到寄存器R3中

在上面的指令中,第2个源操作数为立即数,数值可以是0~0xFF范围内的任意值。

可在平时却经常看到第2操作数大于0xFF的例子,如 MOV R3, #0x400 等等。

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

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

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

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

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

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

转载于:https://www.cnblogs.com/imapla/archive/2013/01/25/2877234.html

你可能感兴趣的文章
java step1:基础知识3
查看>>
Hadoop 发行版本 Hortonworks 安装详解(二) 安装Ambari
查看>>
Vue系列之 => webpack结合vue使用
查看>>
JSR356标准Java WebSocket实现多人 or 单人聊天室demo
查看>>
PHP sha1()函数
查看>>
阿里云 EDAS-HSF 用户指南
查看>>
HashMap实现原理分析
查看>>
Symantec AntiVirus企业版联机客户机端卸载密码(转)
查看>>
jQuery中的ajax
查看>>
BPM实例分享:H3如何调试V3
查看>>
程序员讨论《黑客帝国》(一)真实与虚拟
查看>>
flex布局
查看>>
【C++ 拾遗】C++'s most vexing parse
查看>>
Codeforces 1C Ancient Berland Circus
查看>>
SGU 275 To xor or not to xor
查看>>
[学习笔记]设计模式之Factory Method
查看>>
删除过期备份报错RMAN-06207 RMAN-06208解决方案
查看>>
创意无限!一组网页边栏过渡动画【附源码下载】
查看>>
Java_Hello World
查看>>
建造者模式
查看>>