![]() |
||||||||||||||||||||||||||||||||||||
ARM數據處理指令尋址方式 |
||||||||||||||||||||||||||||||||||||
ARM指令集可以分為跳轉指令、數據處理指令、程序狀態寄存器傳輸指令、Load/Store指令、協處理器指令和異常中斷產生指令。根據使用的指令類型不同,指令的尋址方式分為數據處理指令尋址方式和內存訪問指令尋址方式。本文主要介紹一下ARM數據處理指令尋址方式。 數據處理指令的基本語法格式如下: <opcode> {<cond>} {S} <Rd>,<Rn>,<shifter_operand> 其中,<shifter_operand>有11種形式,如表1-1所示。 表1-1 <shifter_operand>的尋址方式
數據處理指令尋址方式可以分為以下幾種。 (1)立即數尋址方式; 1.立即數尋址方式 指令中的立即數是由一個8bit的常數移動4bit偶數位(0,2,4,…,26,28,30)得到的。所以,每一條指令都包含一個8bit的常數X和移位值Y,得到的立即數 = X循環右移(2×Y)。如圖1-1所示
下面列舉了一些有效的立即數: 下面是一些無效的立即數: 下面是一些應用立即數的指令: MOV R0,#0 ;送0到R0 2.寄存器尋址方式 寄存器的值可以被直接用于數據操作指令,這種尋址方式是各類處理器經常采用的一種方式,也是一種執行效率較高的尋址方式,如: MOV R2,R0 ;R0的值送R2 3.寄存器移位尋址方式 寄存器的值在被送到ALU之前,可以事先經過桶形移位寄存器的處理。預處理和移位發生在同一周期內,所以有效地使用移位寄存器,可以增加代碼的執行效率。 下面是一些在指令中使用了移位操作的例子: ADD R2,R0,R1,LSR #5 華清遠見課程推薦:ARM開發培訓班(FSATC1001)本課程在涵蓋了ARM公司授權培訓課程全部內容基礎上,結合項目實際,進一步增加了更多豐富的實用內容,例如ARM接口開發,從零編寫bootloader引導Linux系統,大約占全部課程的40%內容,這些內容不僅為其他課程打下堅實基礎,而且可以使學員具備更強的實際動手能力,更貼近企業用人需求。本課程的升級同時得到了ARM公司的首肯和大力支持。 熱點鏈接: |