ARM彙編之定址方式

2021-07-11 09:37:31 字數 2088 閱讀 3197

arm指令集之定址方式

一. arm7指令集

arm7處理器有兩個指令集:32位的arm指令集,16位的thumb指令集。

1> arm指令集:效率高,**密度高

2> thumb指令集:具有較高的**密度。

注: 1. 所有的arm指令集都是有條件執行的,而thumb指令集僅有一條指令具備條件執行功能。

2. arm程式和thumb程式可相互呼叫,相互之間的狀態切換開銷幾乎為零。

二. arm處理器定址方式

定址方式是指根據指令中給出的位址碼欄位來實現尋找真實運算元位址的方式。arm7處理器總共有9中基本的定址方式。

1. 暫存器定址

1> 運算元的值存放在暫存器中,指令中的位址碼字段指出的是暫存器編號,指令執行時直接取出暫存器值來操作。

2> mov r1,r2

將r2暫存器中的值存放到r1暫存器中

3. 暫存器移位定址

1> 運算元2先進行移位操作,然後再與第乙個運算元進行操作。

2> mov r0,r1,lsl #3

將r1的值左移三位,然後將結果放入r0中。等價於r0=r1*23

4. 暫存器間接定址

1> 指令中的位址碼給出的是乙個通用暫存器的編號,指令所需的運算元儲存在暫存器指定位址的儲存單元中,即暫存器為運算元的位址指標。

2> ldr r1,[r2]

將r2指向的儲存單元中的資料讀出儲存在r1中。

5. 基址定址

1> 基址定址就是將基址暫存器的內容與指令中給出的偏移量相加,形成運算元的有效位址。

2> 基址定址用於訪問基址附件的儲存單元,常用於查表和陣列操作。

3> ldr r2,[r3,#0x0c]

讀取r3+0x0c位址處的資料存放 到r2暫存器中。

6. 多暫存器定址

1> 多暫存器定址一次可傳送n個暫存器值,允許一條指令傳送16個暫存器的任何子集或所有暫存器。

2> ldmia r1! ,

將r1和r1之後暫存器中的值讀出儲存到r2-r4,和r6中。其中r1每次自加一。

7. 堆疊定址

1> 堆疊定址是隱含的,它使用乙個專門的暫存器(堆指標)指向一塊儲存區域(堆疊)。指標所指向的儲存單元即是堆疊的棧頂。

2> 儲存器堆疊可分為兩種

 向上生長:向高位址方向生長,稱為遞增堆疊。

 向下生長:向低位址方向生長,稱為遞減堆疊。

3> 按堆疊指標的執行順序分為

 滿堆疊:堆疊指標指向最後壓入堆疊的有效資料。

《即當有資料入堆疊時,棧頂指標先加一,然後資料入棧

 空堆疊: 堆疊指標指向下乙個待壓入資料的空位置。

《即當有資料入堆疊時,資料先入棧,然後棧頂指標在加一》

8. 相對定址

相對定址是基址定址的另一種形式。由程式計數器pc提供基準位址,指令中的位址碼字段作為偏移量,兩者相加後得到的位址即運算元的有效位址。

9. 立即定址

1> 立即定址中,操作碼字段後面的部分不是運算元位址而是運算元本身。

2> mov r0,#0xaa

將立即數0xaa存放到暫存器r0中。

ARM彙編之定址方式

arm 指令集之定址方式 一 arm7 指令集 arm7 處理器有兩個指令集 32 位的arm 指令集,16 位的thumb 指令集。1 arm指令集 效率高,密度高 2 thumb 指令集 具有較高的 密度。注 1.所有的arm 指令集都是有條件執行的,而thumb 指令集僅有一條指令具備條件執行...

ARM 彙編定址方式

arm支援9種定址方式 立即數定址,暫存器定址,暫存器偏移定址,暫存器間接定址,基址變址定址,多暫存器定址,相對定址,堆疊定址,塊拷貝定址。將資料直接存放的指令中發給cpu,首先由於arm的一條指令佔了32bit,而操作碼本身也要佔據一些位,所以留給立即數的位數肯定不到32bit,其次並不是滿足指定...

ARM彙編指令學習之定址方式

arm處理器共有9中定址方式 1.暫存器定址 運算元的值在暫存器中,指令執行時直接取出暫存器的值來操作 mov r1,r2 r2 r1 sub r0,r1,r2 r1 r2 r0 2.立即定址 mov r0,0xff00 0xff00 r0 subs r0,r0,1 r0 1 r0 3.暫存器移位定...