寻址方式是根据指令中给出的地址码字段来寻找实啼裂罕暑教地址的方式。ARM处理器支持的基本寻址方式一共有9种,它们是:寄存器寻址、立即数寻址、寄存器移位寻址、寄存器间接寻址、基址寻址、多寄存器寻址、栈寻址、块拷贝寻址和相对寻址。以下对每一种寻址方式进行简明介绍。
1、寄存器寻址
在这种方式下,指令中地址码给出的是寄存器编号,在该寄存器中存放的是操作数,可以直接用于运算。由于寄存器寻址执行效率高,因此ARM指令普遍采用此种寻址方式。
2、立即数寻址
在这种方式下,指令的地址码字段存放的不是操作数地址,而是操作数本身。立即数寻址的特点是速度快,但缺点是取值受到限制。通常使用的立即数是12位或者8位的。
3、寄存器移位寻址
这种寻址方式是ARM指令集特有的。在参与第1作数可以有选择地进行移位操作。移位操作如图4-31个操作数运算之前,第2个寄存器操所示。
4、寄存器间接寻址
在这种方式下,指令的地址码字段给出某一通用寄存器编号。在该寄存器中存放操作数的有效地址,而操作数则存放在存储单元中,即寄存器为操作数的地址指针。
5、基址寻址
在这种方式下,将基址寄存器的值与指令中给出的位移量相加,形成操作数有效地址。基址寻址用于访问基址附近的存储单元,包括基址加偏移和基址加索引寻址。寄存器间接寻址是偏移量为0的基址加偏移寻址。
6、多寄存器寻址
在这种方式下,一次可以传送几个寄存器的值。一条指令可以传送16个寄存器的任何子集(或所有16个寄存器)。
7、栈寻址
栈是一种按“后进先出" (LIFO)或“先进后出”(FILO)顺序进行存取的存储区。栈寻址是隐含的,它使用一个专门的寄存器(栈指针)指向一块栈存储区域。栈指针所指定的存储单元就是栈的栈顶。
8、块拷贝寻址
一种多寄存器寻址的简称,它是指把一块数据从存储器的某一位置拷贝到另一位置的寻址方式。由于块拷贝操作借助多寄存器传送指令LDM/STM完成,因此从本质上讲,块拷贝寻址就是多寄存器寻址。显然.前面讲到的栈寻址也属于多寄存器寻址。
9、相对寻址
相对寻址是基址寻址的一种特殊形态,它把程序计数器PC当作基址寄存器。指令中的地址码字段作为位移量,两者相加后得到操作数的有效地址。位移量指出的是操作数与现行指令之间的相对位里。子程序调用指令就是相对寻址指令。在子程序汇编语句中,地址偏移量通常用标号表示。
文章由
A8开发板供应商小编原创,转载请注明文章来源出处,谢谢合作!
文章评论(0条评论)
登录后参与讨论