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
第一条指令将
超级会员免费看
订阅专栏 解锁全文
1162

被折叠的 条评论
为什么被折叠?



