ARM 立即寻址之立即数的形成 —— 如何判断有效立即数

依据指令中给出的操作数的不同格式,ARM 指令系统具有 8 种常见的寻址方式。我们这次就来讨论一下立即寻址。

立即寻址的特点

在立即寻址,操作数本身直接在指令中给出,取出指令也就获得了操作数,这个操作数也称为立即数。例子如下:

ADD R0, R1, #5      ;R0=R1+5
MOV R0, #0x55       ;R0=0x55 

在这两个例子中,操作数 5 和 0x55 就是立即数。

注意:立即数在指令中要以 “#”为前缀,后面跟实际数值。

立即数形式

我们看到上面两个立即数一个是十进制一个是十六进制,那么这个立即数有哪些形式呢?

#后的立即数形式:

  • 0x 或 & 表示十六进制数
  • 0b 表示二进制数
  • 0d 或缺省表示十进制数

合法立即数

现在又有一个问题,我们怎么判断这个立即数是不是合法的,也就是计算机能够准确表示出来的呢?

立即寻址机器指令格式

这里首先涉及到数据编码的知识。我们知道我们写出的是汇编指令,而汇编指令不是计算机能够理解的,计算机所能理解的只是 0 1 这两种数字。所以,我们写出的汇编指令还要经过译码器译码成机器指令才能被计算机所理解。

在 ARM 中,机器指令的格式大致有如下这么多种,还有一些更具体的这里不提(图片来自 ARM Architecture reference Manual):

评论 17
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值