ARM指令的内存访问
4.18 Memory accesses
许多加载和存储指令支持不同的内存寻址模式。下面简单介绍ARM指令所用的三种不同的内存寻址模式:
* 偏移寻址
语法格式: [ Rn,offset ]
使用偏移量offset与寄存器Rn中的值之和作为要访问的目的内存地址。寄存器Rn中值不发生变化。
* 前索引寻址
语法格式:[ Rn,offset ] !
使用偏移量offset与寄存器Rn中的值之河作为要访问的目的内存地址。然后用得到的目的内存地址更新寄存器Rn。
!是回写标志
*后索引寻址
语法格式:[ Rn ],offset
使用寄存器Rn中的值作为要访问的目的内存地址,然后用Rn中的值与偏移量offset之和更新寄存器Rn。
在上述三种寻址方式中,偏移量offset可以是如下各种形式中的任意一种:
* 一个立即数常量
* 一个寄存器,Rm
* 一个带位移的寄存器,比如:Rm,LSL #shift
*由于上述offset的三种形式和ARM指令中灵活的第二操作数的形式完全相同,故也可以称此处的offset为灵活的寻址偏移量。