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