[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}
相關文章
相關標籤/搜索