ARM處理器 八種定址方式

2021-06-21 10:07:06 字數 1689 閱讀 4789

arm處理器的八種定址方式:

前言:1.什麼是定址?資料都存在儲存器中,定址簡單地說就是找到儲存資料或指令的位址。儲存器有很多儲存單元,用於儲存資料。或者說,定址就是讀取資料所在儲存裝置中對應位址編號中儲存的內容。以儲存單位定址分為位,字,節,字,雙字定址。以功能定址分為直接定址,間接定址,暫存器定址。定址就是為運算和執行命令。

2.什麼是定址方式?通常是指某乙個cpu指令系統中規定的尋找運算元所在位址的方式,或者說通過什麼的方式找到運算元。定址方式的方便與快捷是衡量cpu效能的乙個重要方面. 

1.立即數定址:

運算元在指令中,

如: add r0,r0,#10   ---->r0 = r0 + 10

特點:快,單週期;但受合法立即數的限制;

2.暫存器定址:

利用暫存器中的值作為運算元,

如:add r0,r1,r2   ---->r0 = r 1 + r 2

特點:也是單週期

3.暫存器移位定址:

暫存器中的值移位後得到運算元,用到

桶形移位器

介紹一下桶形移位器:

lsl:(邏輯左移),相當於無符號數x2;

asr: (算術右移),相當於帶符號的數除2;

lsr: (邏輯右移),相當於無符號數除2;

ror:(迴圈右移),相當於位輪換;

rrx:(帶擴充套件的迴圈右移),位輪換,從cf到msb都參與(這一項誰比較懂的幫忙解釋一下)

如:add  r0,r1,r2,lsl #2    -------->r0 = r1 + r2<<2;

4.暫存器間接定址:

暫存器中的值作為運算元的位址,運算元本身放在儲存器中;

5.基址變址定址:

基址暫存器的內容與指令中的偏移量相加,得到有效運算元的位址,然後訪問該位址空間;

分三種:

1)、前索引:

2)、自動索引:

3)、後索引:

如:ldr  r0  【r1】,#4  --->r1存的位址的內容寫進r0,r1存的位址+4再寫進r1;

6.多暫存器定址:

一條指令完成多個暫存器的傳送,最多16個暫存器;

如:stmxx  r0!,

注:xx是idab的任意組合:i-增;d-減;a-後;b-先;

執行這類指令要考慮如下幾個問題:

1)、基址暫存器指向原始位址有沒有放乙個有效值?

2)、暫存器列表哪個暫存器被最先傳送?

3)、儲存器位址增長方向?

4)、指令執行完成後,基址暫存器有沒有指向乙個有效值?

如:stmia  r0!, 的答案分別是:有;r1;低-高;沒有。

為什麼要考慮這麼多,因為涉及到資料還原的問題;

如:stmib   r0!,[r1-r5]

ldmda  r0! , [r1-r5]             ------還原

7.相對定址:

pc當前值位基址,指令中值為偏移量,相加作為運算元的位址;

如  b/bl    不過有範圍限制 pc+-32mbytes

8.堆疊定址:

先進先出的原則;

如:stmxx  sp! (r0 - r12)   ---  xx是fead的任意組合,不過規定只用fd;

4中堆疊方式:f-滿;e-空;a-後;b-先;

如:入棧:stmfd  sp!,(r0-r12)

出棧:ldmfd sp! ,(r0-r12)

ARM 處理器定址方式

2007 10 26 13 35 arm 處理器定址方式 定址方式是根據指令中給出的位址碼欄位來實現尋找真實運算元位址的方式,arm處理器有 9 種基本定址方式。1 暫存器定址 mov r1,r2 r2 r1 sub r0,r1,r2 r1 r2 r0 指令執行時直接取出暫存器值操作。2 立即定址 ...

ARM處理器定址方式

arm處理器支援九種定址方式,分別是 立即定址 暫存器定址 暫存器間接定址 暫存器移位定址 基址變址定址 多暫存器定址 堆疊定址 塊拷貝定址 相對定址 例如 mov r0,1234作用是將十進位制數1234賦值給r0,執行結果是r0 1234,立即數以 作為字首,十六進製制數以 0x 開頭,如 0x...

簡述處理器中的三種定址方式

乙個微處理器通常有多個用來定址儲存器的輸出訊號。例如因特爾公司生產的8080處理器,是乙個具有重大歷史意義的晶元,本篇主要以8080為例做敘述。8080是乙個8位的微處理器,可以一次從儲存器讀取或寫入8位資料。看上圖,a0 a15表示16個可用於定址的輸出訊號,所以8080處理器可定址的空間大小為6...