上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人
1.7 ARM支持的寻址方式
寻址方式是处理器执行指令时寻找真实操作数地址的方式,ARM支持9种寻址方式,下面分别介绍。
(1)寄存器寻址:所需要的操作数在寄存器中,即寄存器的内容为操作数。
(2)立即寻址:操作数包含在指令中,读取了指令就读取了操作数。
(3)寄存器移位寻址:ARM指令集特有的寻址方式。操作数在寄存器中,但寄存器中保存的数不是操作数本身。真实操作数由寄存器移动一定的位数得到(即乘以2n或除以2n,n为左移或右移的位数)。
(4)寄存器间接寻址:操作数在内存中,但指令中并没有操作数在内存中的地址,而是指定一个寄存器,这个寄存器的内容为操作数在内存中的地址(即用寄存器作为指针访问内存)。
(5)基址寻址:与寄存器间接寻址类似,但寄存器保存的不是操作数在内存中的地址,操作数在内存中的地址由寄存器中的值加上指令指定的一个偏移得到;
(6)多寄存器寻址:一次可把内存中的多个值传送到多个寄存器或是把多个寄存器中的值传递到内存中。这种寻址允许一条指令传递16个寄存器的任何子集(或所有16个寄存器);
(7)堆栈寻址:多寄存器寻址的特殊形式,是按照堆栈的约束条件工作的成对使用的多寄存器寻址。ARM处理器支持所有类型的堆栈;
(8)块复制寻址:多寄存器寻址的特殊形式,是按照一定的规则成对使用的多寄存器寻址,一般用于内存复制;
(9)相对寻址:基址寻址的特殊形式,这个基址必须由程序计数器PC(R15)提供。这样,操作数就以指令本身所在的内存地址+8为基础,而指令中的偏移量实质就是操作数与这条指令的相对位置(应该再加上8才是真正的偏移,但汇编程序会处理这些差异)。