寻址方式是处理器根据指令给出的地址码字段来寻找物理地址的方式。数据结构
当即寻址也称为当即数据寻址,在当即寻址中的操做码字段后面的地址码部分就是操做数据自己,在数据包含在指令当中,取出指令就取出了当即数。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}