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