ARM微处理器中的常量

来源:本站
导读:目前正在解读《ARM微处理器中的常量》的相关信息,《ARM微处理器中的常量》是由用户自行发布的知识型内容!下面请观看由(电工技术网 - www.9ddd.net)用户发布《ARM微处理器中的常量》的详细说明。
简介:学习ARM微处理器中的常量时,一直很懵懂,网上查了一下,终于弄明白,记录下来先。

书上的原话是:

“常量是一个8位的常数经循环右移偶数位(0、2、4、8、…、26、28、30)得到。ARM指令时固定的32位指令编码,不可能直接用32位表示立即数,采用上述间接方式表示的立即数在指令编码中需要12位(其中8位表示常数,4位表示循环右移)。这样一来,不是每一个32位常数都是合法的立即数,只有通过上面的构造方法得到的才是合法的立即数。

合法常量:0xFF、0×104、0xFF000、0xFF000000、0xF000000F。

非法常量:0×101、0×102、0xFF1、0xFF04、0xFF003、0xFFFFFFFF、0xF000001F。”

一开始我纳闷:“一个8位的常数”是什么东西?结论是:一个8位的任何数,即0×00(0000 0000)~0xFF(1111 1111)都是符合条件的8位常数。

那么“循环右移偶数位”是什么概念?其实是在上述的8位常数前填加0,补充到32位之后,再循环右移偶数位。

举个例子:

比如0x0F(0000 1111)扩充之后为0x0000000F(0000 0000 0000 0000 0000 0000 0000 1111),循环右移(比如2位)之后为0xC0000003(1100 0000 0000 0000 0000 0000 0000 0011)。故0xC0000003也是一个ARM的合法立即数。

本文出自 “嵌入式开发乐园” 博客,请务必保留此出处http://tigerjibo.blog.51cto.com/7718010/1276016

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