




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第二章ARM指令編碼分類及其尋址方式ARM指令分類ARM指令的一般編碼格式ARM指令尋址方式一.ARM指令分類跳轉指令數據處理指令程序狀態寄存器(PSR)傳輸指令Load/Store指令協處理指令異常中斷產生二.ARM指令的一般編碼格式語法格式:
<opcode>{<cond>}{S}<Rd>,<Rn>,<shifter_operand>ARM指令的條件碼域:
指令格式中符號說明opcode
操作碼;指令助記符,如LDR、STR等。cond
可選的條件碼;執行條件,如EQ、NE等。S 可選后綴;若指定“S”,則根據指令執行結果更新CPSR中的條件碼。Rd 目標寄存器。Rn
存放第1操作數的寄存器。operand2 第2個操作數寄存器方式:操作數即為寄存器的數值如:MOVSR3,R2ADDR0,R1,R2寄存器移位方式:操作數為寄存器的數值做相應的移位而得到。LSL邏輯左移——空出的最低有效位用0填充LSR邏輯右移——空出的最高有效位用0填充ASL算術左移——同LSLASR算術右移——空出的最高低有效位用“符號位”填充ROR循環右移——移出的最低有效位依次填入空出的最高有效位RRX帶擴展的循環右移——將寄存器內容循環右移1位,空位用原來的C標志位填充。ARM指令集一般編碼形式ARM指令集是以32位二進制編碼的方式給出的,大部分的指令編碼中定義了第一操作數、第二操作數、目的操作數、條件標志影響位以及每條指令所對應的不同功能實現的二進制位。每條32位ARM指令都具有不同的二進制編碼方式,和不同的指令功能相對應。
編碼表如下:
條件執行
ARM指令根據CPSR中的條件位自動判斷是否執行指令,在條件滿足時,指令執行,否則指令被忽略。在ARM的指令編碼表中,統一占用編碼的最高四位[31:28]來表示“條件碼”(即“cond”)。
條件域表1條件碼后綴標
志含
義0000EQZ置位相等0001NEZ清零不相等0010CSC置位無符號數大于或等于0011CCC清零無符號數小于0100MIN置位負數0101PLN清零正數或零0110VSV置位溢出0111VCV清零未溢出條件域表2條件碼后綴標
志含
義1001LSC清零Z置位無符號數小于或等于1010GEN等于V帶符號數大于或等于1011LTN不等于V帶符號數小于1100GTZ清零且(N等于V)帶符號數大于1101LEZ置位或(N不等于V)帶符號數小于或等于1110AL忽略無條件執行三.尋址方式立即尋址寄存器尋址寄存器間接尋址基址加偏址尋址堆棧尋址塊拷貝尋址相對尋址立即尋址立即尋址也叫立即數尋址,這是一種特殊的尋址方式,操作數本身就在指令中給出,只要取出指令也就取到了操作數,這個操作數被稱為立即數,對應的尋址方式也就叫做立即尋址。例如以下指令:
ADD R0,R0,#1 /*R0←R0+1*/ADD R0,R0,#0x3f /*R0←R0+0x3f*/
在以上兩條指令中,第二個源操作數即為立即數,要求以“#”為前綴,對于以十六進制表示的立即數,還要求在“#”后加上“0x”。有效立即數問題在32位指令編碼中存放32位立即數的方法是:在ARM數據處理指令中,當參與操作的第二操作數為立即數型時,每個立即數都是采用一個8位的常數循環右移偶數位而間接得到。其中循環右移的位數由一個4位二進制的兩倍表示,如果立即數記作<immediate>,8位常數記作immed_8,4位的循環右移值記作rotate_imm,有效的立即數是由一個8位的立即數循環右移偶數位得到。因此有效立即數immediate可以表示成:<immediate>=immed_8循環右移(2×rotate_imm)有效立即數問題——數據處理指令二進制編碼寄存器尋址寄存器尋址就是利用寄存器中的數值作為操作數,這種尋址方式是各類微處理器經常采用的一種方式,也是一種執行效率較高的尋址方式。以下指令:
ADD R0,R1,R2 /*R0←R1+R2*/
該指令的執行效果是將寄存器R1和R2的內容相加,其結果存放在寄存器R0中。寄存器尋址第二操作數為寄存器型的移位操作
在ARM指令的數據處理指令中參與操作的第二操作數為寄存器型時,在執行寄存器尋址操作時,可以選擇是否對第二操作數進行移位,即Rm,{<shift>},其中Rm稱為第二操作數寄存器,<shift>用來指定移位類型(LSL,LSR,ASL,ASR,ROR或RRX)和移位位數。移位位數可以是5位立即數(#<#shift>)或寄存器(Rs)。在指令執行時將移位后的內容作為第二操作數參與運算。例如指令:
ADDR3,R2,R1,LSR#2;R3<—R2+R1÷4寄存器移位第二操作數移位方式
LSL:邏輯左移,空出的最低有效位用0填充。LSR:邏輯右移,空出的最高有效位用0填充。ASL:算術左移,由于左移空出的有效位用0填充,因此它與LSL同義。ASR:算術右移,算術移位的對象是帶符號數,移位過程中必須保持操作數的符號不變。如果源操作數是正數,空出的最高有效位用0填充,如果是負數用1填充。ROR:循環右移,移出的字的最低有效位依次填入空出的最高有效位。RRX:帶擴展的循環右移。將寄存器的內容循環右移1位,空位用原來C標志位填充。寄存器移位寄存器尋址第二操作數的移位位數
移位位數可以用立即數方式或者寄存器方式給出,如下所示:ADDR3,R2,R1,LSR#2 ;R3<—R2+R1÷4ADDR3,R2,R1,LSRR4 ;R3<—R2+R1÷2R4寄存器R1的內容分別邏輯右移2位、R4位(亦即R1÷4、R1÷2R4),再與寄存器R2的內容相加,結果放入R3中。
寄存器間接尋址
寄存器間接尋址就是以寄存器中的值作為操作數的地址,而操作數本身存放在存儲器中。例如以下指令:
LDR R0,[R1] /*R0←[R1]*/STR R0,[R1] /*[R1]←R0*/
第一條指令將以R1的值為地址的存儲器中的數據傳送到R0中。第二條指令將R0的值傳送到以R1的值為地址的存儲器中。基址加偏址尋址
基址變址尋址就是將寄存器(該寄存器一般稱作基址寄存器)的內容與指令中給出的地址偏移量相加,從而得到一個操作數的有效地址。變址尋址方式常用于訪問某基地址附近的地址單元。采用變址尋址方式的指令又可以分為以下幾種形式:前變址模式:LDRR0,[R1,#4] ;R0←[R1+4]自動變址模式:LDRR0,[R1,#4]! ;R0←[R1+4]、R1←R1+4后變址模式:LDRR0,[R1],#4 ;R0←[R1]、R1←R1+4基址加偏址尋址 基址寄存器的地址偏移可以是一個立即數,也可以是另一個寄存器,并且在加到基址寄存器前還可以經過移位操作,如下所示:LDR
r0,[r1,r2];r0<—mem32[r1+r2]LDRr0,[r1,r2,LSL#2];r0<—[r1+r2*4]
但常用的是立即數偏移的形式,地址偏移為寄存器形式的指令很少使用。堆棧尋址堆棧是一種數據結構,按先進后出(FirstInLastOut,FILO)的方式工作,使用一個稱作堆棧指針的專用寄存器指示當前的操作位置,堆棧指針總是指向棧頂。當堆棧指針指向最后壓入堆棧的數據時,稱為滿堆棧(FullStack),而當堆棧指針指向下一個將要放入數據的空位置時,稱為空堆棧(EmptyStack)。即訪問存儲器時,存儲器的地址向高地址方向生長,稱為遞增堆棧(ascendingstack)。存儲器的地址向低地址方向生長,稱為遞減堆棧(descendingstack)。堆棧尋址四種類型的堆棧工作方式
滿遞增堆棧:堆棧指針指向最后壓入的數據,且由低地址向高地址生成。滿遞減堆棧:堆棧指針指向最后壓入的數據,且由高地址向低地址生成。空遞增堆棧:堆棧指針指向下一個將要放入數據的空位置,且由低地址向高地址生成。空遞減堆棧:堆棧指針指向下一個將要放入數據的空位置,且由高地址向低地址生成塊拷貝尋址塊拷貝尋址是多寄存器傳送指令LDM/STM的尋址方式。LDM/STM指令可以把存儲器中的一個數據塊加載到多個寄存器中,也可以把多個寄存器中的內容保存到存儲器中。尋址操作中的寄存器可以是R0-R15這16個寄存器的子集或是所有寄存器。LDM/STM指令依據其后綴名的不同其尋址的方式也有很大不同,見下表。相對尋址
與基址變址尋址方式相類似,相對尋址以程序計數器PC的當前值為
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年福建省中考道德與法治真題【含答案、解析】
- 泵站巡查人員管理制度
- 培訓機構出入口管理制度
- 幼兒園黃碼紅碼管理制度
- 公司已建立資金管理制度
- 公司小紅書平臺管理制度
- 施工勞務用工管理制度
- 景區兼職人員管理制度
- 普通制劑物料管理制度
- 復工前宿舍疫情管理制度
- 山東省威海市實驗中學2025屆七下英語期末達標檢測試題含答案
- 2025年北京市水務局所屬事業單位招聘工作人員101人筆試高頻重點提升(共500題)附帶答案詳解
- 【MOOC】新媒體文化十二講-暨南大學 中國大學慕課MOOC答案
- 國家開放大學《Python語言基礎》實驗2:基本數據類型和表達式計算參考答案
- 《心電監護》ppt課件
- 土地整治項目管理PPT
- GB∕T 40754-2021 商場公共設施服務規范
- 會計工作證明模板
- 中國核電標準化組織方式及工作方案
- 壓裂返排液處理技術PPT課件
- 中考物理考前注意事項(共8頁)
評論
0/150
提交評論