ARM指令集之定址方式

2021-07-22 12:20:07 字數 1852 閱讀 5306

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暫存器中

暫存器移位定址

1>

運算元2

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

2>

mov   r0,r1,lsl #3將r1

的值左移三位,然後將結果放入

r0中。等價於

r0=r1*23

暫存器間接定址

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中。

MIPS指令集 定址的方式

一般來講,程式由資料和指令構成,指令指導操作,資料提供操作物件,指令和資料在執行時都是存在記憶體中的,對它們的定址需要特定的方法。定址方式分為指令定址和資料定址。對指令位址的尋找稱為指令定址,對資料位址的尋找稱為資料尋找。順序尋找 按指令儲存順序自動定址,如程式計數器pc定址。記憶體一般按位元組 b...

ARM指令定址方式

先看一下arm的各種定址方式,然後開始講一下指令的分類和基本的格式,接著看一下指令中必不可少的條件碼,最後看一下各類指令的操作碼!有些arm指令可能記錄的不是很詳細,可以檢視第七次課的培訓文件中的 命令幫助文件 一 arm定址方式 1 立即定址 立即定址也叫立即數定址,這是一種特殊的定址方式,運算元...

ARM 指令集 比較指令

譯註 cmp 和 cmp 是算術指令,teq 和 tst 是邏輯指令。把它們歸入一類的原因是它們的 s 位總是設定的,就是說,它們總是影響標誌位。compare negative cmn status op 1 op 2 cmn同於cmp,但它允許你與小負值 運算元 2 的取負的值 進行比較,比如難...