33、ARM 寻址模式详解

ARM 寻址模式详解

1. 寄存器间接寻址概述

寄存器间接寻址是一种常见的寻址模式,在这种模式下,操作数的位置存储在寄存器中。指令指定的不是操作数的实际地址,而是指向该地址的寄存器。在 ARM 文献中,这种寻址模式也被称为索引寻址,有些人称之为基址寻址。

访问操作数时,寄存器间接寻址模式需要进行三次读取操作:
1. 读取指令以找到指针寄存器。
2. 读取指针寄存器以找到操作数地址。
3. 在操作数地址处读取内存以找到操作数。

寄存器间接寻址之所以重要,是因为包含实际操作数指针的寄存器内容可以在运行时修改,因此地址是可变的。这样,我们可以通过更改指针来遍历数据结构,如表格。

例如,执行 ldr r1,[r0] 指令时, r0 作为指针,包含值 n ,该指令将寄存器 r0 指向的内存位置的内容加载到寄存器 r1 中。执行 add r0,r0,#4 会将指针寄存器 r0 的内容加 4,使其指向下一个字位置(因为连续的字地址相差 4)。

以下代码展示了如何使用寄存器间接寻址遍历表格中的值:

ldr r1,[r0]    @ Get data pointed at by r0
add r0,r0,#4   @ Advance pointer to next word location

第一条指令将

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值