arm指令係統支持的尋址方式
時間:2016-03-12 08:05 來源:ob体育竞彩
尋址方式就是處理器根據指令中給出的地址信息來尋找物理地址的方式。目前ARM指令係統支持如下幾種常見的尋址方式。
一、立即尋址
立即尋址也叫立即數尋址,這是一種特殊的尋址方式,操作數本身就在指令中給出,隻要取出指令也就取到了操作數。這個操作數被稱為立即數,對應的尋址方式也就叫做立即尋址。例如以下指令:
ADD R0,R0,#1 ;R0←R0+1
ADD R0,R0,#0x3f ;R0←R0+0x3f
在以上兩條指令中,第二個源操作數即為立即數,要求以“#”為前綴,對於以十六進製表示的立即數,還要求在“#”後加上“0x”或“&”。
二、寄存器尋址
寄存器尋址就是利用寄存器中的數值作為操作數,這種尋址方式是各類微處理器經常采用的一種方式,也是一種執行效率較高的尋址方式。以下指令:
ADD R0,R1,R2 ;R0←R1+R2
該指令的執行效果是將寄存器R1和R2的內容相加,其結果存放在寄存器R0中。
三、寄存器間接尋址
寄存器間接尋址就是以寄存器中的值作為操作數的地址,而操作數本身存放在存儲器中。例如以下指令:
ADD R0,R1,[R2] ;R0←R1+[R2]
LDR R0,[R1] ;R0←[R1]
STR R0,[R1] ;[R1]←R0
在第一條指令中,以寄存器R2的值作為操作數的地址,在存儲器中取得一個操作數後與R1相加,結果存入寄存器R0中。
第二條指令將以R1的值為地址的存儲器中的數據傳送到R0中。
第三條指令將R0的值傳送到以R1的值為地址的存儲器中。
四、基址變址尋址
基址變址尋址就是將寄存器(該寄存器一般稱作基址寄存器)的內容與指令中給出的地址偏移量相加,從而得到一個操作數的有效地址。變址尋址方式常用於訪問某基地址附近的地址單元。采用變址尋址方式的指令常見有以下幾種形式,如下所示:
LDR R0,[R1,#4] ;R0←[R1+4]
LDR R0,[R1,#4]! ;R0←[R1+4]、R1←R1+4
LDR R0,[R1] ,#4 ;R0←[R1]、R1←R1+4
LDR R0,[R1,R2] ;R0←[R1+R2]
在第一條指令中,將寄存器R1的內容加上4形成操作數的有效地址,從而取得操作數存入寄存器R0中。
在第二條指令中,將寄存器R1的內容加上4形成操作數的有效地址,從而取得操作數存入寄存器R0中,然後,R1的內容自增4個字節。
在第三條指令中,以寄存器R1的內容作為操作數的有效地址,從而取得操作數存入寄存器R0中,然後,R1的內容自增4個字節。
在第四條指令中,將寄存器R1的內容加上寄存器R2的內容形成操作數的有效地址,從而取得操作數存入寄存器R0中。
五、多寄存器尋址
采用多寄存器尋址方式,一條指令可以完成多個寄存器值的傳送。這種尋址方式可以用一條指令完成傳送最多16個通用寄存器的值。以下指令:
LDMIA R0,{R1,R2,R3,R4} ;R1←[R0]
;R2←[R0+4]
;R3←[R0+8]
;R4←[R0+12]
該指令的後綴IA表示在每次執行完加載/存儲操作後,R0按字長度增加,因此,指令可將連續存儲單元的值傳送到R1~R4。
六、 相對尋址
與基址變址尋址方式相類似,相對尋址以程序計數器PC的當前值為基地址,指令中的地址標號作為偏移量,將兩者相加之後得到操作數的有效地址。以下程序段完成子程序的調用和返回,跳轉指令BL采用了相對尋址方式:
BL NEXT ;跳轉到子程序NEXT處執行
……
NEXT
……
MOV PC,LR ;從子程序返回
七、堆棧尋址
堆棧是一種數據結構,按先進後出(First In Last Out,FILO)的方式工作,使用一個稱作堆棧指針的專用寄存器指示當前的操作位置,堆棧指針總是指向棧頂。
當堆棧指針指向最後壓入堆棧的數據時,稱為滿堆棧(Full Stack),而當堆棧指針指向下一個將要放入數據的空位置時,稱為空堆棧(Empty Stack)。
同時,根據堆棧的生成方式,又可以分為遞增堆棧(Ascending Stack)和遞減堆棧(Decending Stack),當堆棧由低地址向高地址生成時,稱為遞增堆棧,當堆棧由高地址向低地址生成時,稱為遞減堆棧。這樣就有四種類型的堆棧工作方式,ARM微處理器支持這四種類型的堆棧工作方式,即:
- 滿遞增堆棧:堆棧指針指向最後壓入的數據,且由低地址向高地址生成。
- 滿遞減堆棧:堆棧指針指向最後壓入的數據,且由高地址向低地址生成。
- 空遞增堆棧:堆棧指針指向下一個將要放入數據的空位置,且由低地址向高地址生成。
- 空遞減堆棧:堆棧指針指向下一個將要放入數據的空位置,且由高地址向低地址生成。
看過《arm指令係統支持的尋址方式》的人還看了以下文章
|
通信傳輸的數據中途失真接收方如何發現 |
通信傳輸的數據中途失真,接收方都是通過編碼校驗的方式發現錯誤的。常用的校驗方式有如下: 1)奇偶校驗:這是最簡單的校驗方式,根據被傳輸數據的二進製編碼中,數位為1的個數是奇數還是偶數來進行校驗,然後把1的個數是奇數或者偶數也做為1bit的編碼,附... |
|
工業交換機與商用交換機有什麼樣的區別 |
工業交換機兼容性強,(各種PLC、交換機等工業類產品),可以適應惡劣的環境。具體體現在哪些方麵? 工業交換機分為網管和非網管的,根據不同數量有各種不同的輸出接口(4、5、8、16、24口等),不同的功能和接口的價格不一樣。一般工業交換機可以提供3種工... |
|
RS485的通信方式及應用 |
我們在工業控製、儀器儀表以及電力通信等領域中是需要進行較遠距離數據交換的。我們知道在以前使用的RS232串口通信由於采用的是點對點通訊方式,最大的傳輸距離也隻有十幾米遠,並且在傳輸數據時RS232傳輸方式會受電磁的幹擾造成信號傳輸的錯誤。為了彌補RS2... |
|
路由器交換機兩種網絡設備的區別是什麼 |
首先看外觀 路由器不管是低端、中端、高端,也不管是家用還是商用,最少有1個WAN口,1~8個LAN口。中高端的可能還有Console口,用於配置設備。 交換機沒有WAN口,隻有LAN口,LAN口數量從5~48口不等,看具體的需求。中高端的還有Console口,用於配置設備。 其... |
|
交換機和路由器有哪些配置方法 |
如果是非網管的交換機,根本就不需要配置,也配置不了,直接上電,即插即用。如果是可網管的交換機,分兩種情況: 1、Web界麵。找到交換機的管理地址和默認的登錄用戶名、密碼(一般在設備的背麵標簽上有,如果沒有,請翻閱設備附帶的說明書),通過電腦的瀏... |