在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
芯片精品文章合集(500篇!) 创芯人才网--重磅上线啦!
查看: 1796|回复: 0

[资料] ARM寻址方式——立即寻址

[复制链接]
发表于 2015-12-22 15:46:43 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

x

立即寻址也称为立即数寻址,是一种特殊的寻址方式。操作数是直接通过指令给出,数据就包含在指令的32位编码中,只要取出指令就可在指令执行时得到立即操作数。例如指令:

ADD       R0R0#1   R0<-R0+1

AND       R8,R7,#0xFF  R8<-R7 AND0xFF

第一条指令完成寄存器R0的内容加1,结果放回R0中。第2条指令完成R732位值与

0xFF相“与”的结果送到R8中。

若第2个源操作数为一个立即数,则以#为前缀。在#后加0x&表示十六进制值数;在#后加0b表示二进制值数;在#后加0d或缺省时表示十进制值数。

需要注意的是,如果一个32位指令编码中,就有可能完全占据32位编码空间,而使指令的操作码等无法在编码中体现。在ARM指令编码中,32位有效立即数是通过循环右移偶数位而间接得到。

ARM数据处理指令中,当参与操作的第2操作数为立即数型时,每个立即数都是采用一个8位的常数循环右移偶数位而间接得到,其中循环右移的位数由一个4位二进制的2倍表示。如果立即数记作<immediate>8位常数记作immed_84位的循环右移值记作rotate_imm,有效的立即数是由一个8位的立即数循环右移偶数位得到,则有效立即数immediate可表示成:

<immediate>=immed_8循环右移(2×rotate_imm

采取间接表示,一个32位立即数在指令编码只需要用12位编码表示。这样编码的缺点是,并不是每一个32位的常数都是合法的立即数,只有通过上面的构造方法得到的才是合法的立即数,因此使用立即数时要特别注意。

例如,常数0x0000F2000x001100000x00012800等是合法的立即数,能通过上述构造方法得到。

应用例子中如下所示:

.text

_start:

       MOV      R0,#0x0000F200

       MOV      R1,#0x00110000

       MOV      R4,#0x00012800

       ADD       R2,R1,R0

       BGE       Here

Stop:

       B            stop

HERE:SUB    R3.R4.R1

.net

其中,带有3个立即数的MOV指令的二进制编码为

8000E3A00CF2                / MOV    R0,#0xF200/

8004E3A01811                 / MOV    R1,#0x110000/

8008E3A04B4A               /MOV    R4,#0x12800/

由此可以看出:

指令(1)中立即数0xF200是由E3A00CF2中的后120xF2间接表示的,即是由8位的0xF2循环右移242×12)位得到。

指令(2)中立即数0x1100000是由E3A01811中的后120x811间接表示的,即是由8位的0x11循环右移162×8)位得到。


指令(3)中立即数0x12800是由E3A04B4A中的后120XB4A间接表示的,即是由8位的0x4A循环右移242×12)位得到。

0x10100x001020xFF10000等常数不是合法的立即数,不能通过合法的构造方法得到。

显然,对于8位立即数不需要经过移位间接表示,而可以直接表示。

凌阳教育,专注嵌入式人才培养13年,完善的培养方案,强大的师资,合理的课程安排,成功从小白蜕变为嵌入式工程师。想了解凌阳教育,或者获得更多嵌入式学习资料的免费下载,请点击www.sunplusedu.com访问凌阳教育官网

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条


小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-11-26 03:35 , Processed in 0.012597 second(s), 6 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表