2 ARM的寻址方式

2.1立即寻址
含义:操作数包含着指令的32位机器编码中;
例:
ADD R0,R0,#1 ;R0<-R0+1
AND R8,R7,#0xFF ;R8<-R7 AND 0xFF

操作数2只有12位,怎么转为32位立即数:12位编码包括8位常数和4位循环右移植,由8位常数循环右移4位值的两倍的到最后的32位立即数。

例:MOV R0,#0x0000F200 ;R0<-#0X0000F200

机器代码:E(条件码) 3A(指令码) 00 CF2(操作数2)
4位循环右移植:C
8位常数:0xF2
方法把0xF2循环右移12*2=24位得到原32位数值
移位前:
0000 0000 0000 0000 0000 0000 1111 0010
移位后:
0000 0000 0000 0000 1111 0010 0000 0000
即为:0000F200
并不是所有32位立即数都可以这样编码,需要进行合法性判断

在这里插入图片描述

2.2寄存器寻址
含义:操作数存放在寄存器中;
(1)基本方式
ADD R0,R1,R2 ;R0<-R1+R2
(2)对第二操作数寄存器的移位操作
ADD R3,R2,R1,LSR #2(逻辑右移两位) ;R3<-R2+R1/4(逻辑一位除2,因为这是二进制)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值