[ARM] ARM处理器寻址方式

ARM处理器寻址方式

 

寻址方式是处理器根据指令给出的地址码字段来寻找物理地址的方式。数据结构

 

一、当即寻址

  当即寻址也称为当即数据寻址,在当即寻址中的操做码字段后面的地址码部分就是操做数据自己,在数据包含在指令当中,取出指令就取出了当即数。spa

ADD     R0,R0,#1
MOV    R0,#0X3FF
 
 

二、寄存器寻址

  在寄存器寻址中,操做数的值在寄存器中,就是利用指令中的地址码字段指出的寄存器中的数值做为操做数,指令执行时直接取出寄存器值操做,这种寻址方式是各种微处理器常常采用的一种方式,也是一种执行效率较高的寻址方式。指针

ADD    R0,R1,R2
MOV    R1,R2
 
 

三、寄存器间接寻址

  寄存器间接寻址指令中的地址码给出的是一个通用寄存器编号,所须要的操做数保存在寄存器指定地址的存储单元中,即寄存器为操做数据地址指针。code

SWP    R1,R1,[R2]
ADD    R0,R1,[R2]
LDR     R0,[R1]
 
 

四、寄存器偏移寻址

  寄存器偏移寻址是ARM指令集特有的寻址方式,当第二操做数是寄存器偏移方式时,第二个寄存器操做数在第一个操做数结合前选择移位操做。ip

MOV     R0,R2,LSL #3
ANDS    R1,R1,R2,LSL R3
 
 

五、基址变址寻址

  基址变址寻址就是将寄存器内容与指令中给出的地址偏移量相加,从而获得一个操做数的有效地址。变地址方式经常使用于访问某基址附近的地址单元。it

LDR    R0,[R1,#0X0F]
LDR    R0,[R1],#4
LDR    R0,[R1,R2]
 
 

六、多寄存器寻址

  多寄存器寻址就是一次能够传送几个寄存器的值,这种寻址方式能够用一条指令完成传送最多16个通用寄存器的值。io

LDMIA    R0,{R1,R2,R3,R4}
STMIA     R0,{R3-R5,R10}
 
 

七、堆栈寻址

  一、堆栈是一种数据结构,按先进后出的方式工做,使用一个称为堆指针的专用寄存器指示当前的操做位置,堆栈指针老是指向栈顶。
  二、当堆栈指针指向最后压入数据时,称为满堆栈,而当堆栈指针指向下一个将要放入数据的空位置时,称为空堆栈,同时根据堆栈的生成方式,又可分为递增堆栈和递减堆栈。
  三、当堆栈由低地址向高地址生成时,称为递增堆栈,当堆栈由高地址向低地址时,称为为递减堆栈。
  四、ARM微处理器支持四种类型的堆栈工做方式:满增堆栈、满减堆栈,空增堆栈、空减堆栈。class

LDMFD    SP!,{R1-R7,LR}
STMFD     SP!,{R1-R7,LR}
相关文章
相关标签/搜索