版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
Thumb指令集
Thumb指令集概述Thumb指令詳細(xì)介紹
ARM與THUMBTHUMB指令是ARM指令的子集,可以相互調(diào)用,只要遵循一定的調(diào)用規(guī)則。Thumb指令與ARM指令的時間效率和空間效率關(guān)系為:存儲空間約為ARM代碼的60%~70%指令數(shù)比ARM代碼多約30%~40%存儲器為32位時ARM代碼比Thumb代碼快約40%存儲器為16位時Thumb比ARM代碼快約40~50%使用Thumb代碼,存儲器的功耗會降低約30%10.1Thumb指令集概述
Thumb指令集是針對代碼密度的問題而提出的??梢钥醋魇茿RM指令集的子集。Thumb是一個不完整的體系結(jié)構(gòu),不能指望處理器只執(zhí)行Thumb代碼而不支持ARM指令集。一般Thumb代碼只需支持通用功能,必要時可以借助ARM指令集.
應(yīng)用程序可以靈活的將ARM和Thumb子程序混合編程以便在例程的基礎(chǔ)上提高性能或代碼密度。ARM開發(fā)工具完全支持Thumb指令Thumb指令集概述本節(jié)可以分為以下幾個部分:
Thumb指令集編碼
Thumb狀態(tài)切換
Thumb對寄存器的操作
Thumb指令集特性10.1.1Thumb指令集編碼Thumb指令集編碼如下:10.1.2Thumb狀態(tài)切換在任何時刻,CPSR的第5位(位T)決定了ARM微處理器執(zhí)行的是ARM指令流還是Thumb指令流。當(dāng)T置1,則認(rèn)為是16位的Thumb指令流;當(dāng)T置0,則認(rèn)為是32位的ARM指令流。進(jìn)入Thumb模式進(jìn)入Thumb指令模式有兩種方法:一種是執(zhí)行一條交換轉(zhuǎn)移指令BX,將指令中的目標(biāo)地址寄存器的最低位置1;另一種方法是利用異常返回,也可以把微處理器從ARM模式轉(zhuǎn)換為Thumb模式。退出Thumb模式退出Thumb指令模式也有兩種方法:一種是執(zhí)行Thumb指令中的交換轉(zhuǎn)移BX指令可以顯式的返回到ARM指令流;另一種是利用異常進(jìn)入ARM指令流,因為異??偸窃贏RM模式下進(jìn)行。10.1.3Thumb對寄存器的操作Thumb指令集是ARM指令集的一個子集,并只能對限定的ARM寄存器進(jìn)行操作對8個通用寄存器R0-R7具有全部訪問權(quán)限,對寄存器R13-R15進(jìn)行擴(kuò)展作為特殊應(yīng)用:R13用作堆棧指針SP;R14用作鏈接寄存器LR;R15用作程序計數(shù)器PC。CPSR的條件標(biāo)志由算術(shù)和邏輯操作設(shè)置并控制轉(zhuǎn)移。R8-R12訪問受到限制。除MOV或ADD指令訪問寄存器R8-R15外,數(shù)據(jù)處理指令總是更新CPSR中的ALU狀態(tài)標(biāo)志除CMP指令外,訪問寄存器R8-R15的Thumb數(shù)據(jù)處理指令不能更新標(biāo)志。10.1.4Thumb指令集特性Thumb指令采用16位二進(jìn)制編碼,而ARM指令是32位的。Thumb指令也是采用Load/Store結(jié)構(gòu),有數(shù)據(jù)處理、數(shù)據(jù)傳送及流控制指令等。大多數(shù)Thumb指令是無條件執(zhí)行的(除了轉(zhuǎn)移指令B),而所有ARM指令都是條件執(zhí)行的。許多Thumb數(shù)據(jù)處理指令采用2地址格式,即目的寄存器與一個源寄存器相同,而大多數(shù)ARM數(shù)據(jù)處理指令采用的是3地址格式(除了64位乘法指令外)。Thumb指令集沒有協(xié)處理器指令、信號量(semaphore)指令、乘加指令、64位乘法指令以及訪問CPSR或SPSR的指令,而且指令的第二操作數(shù)受到限制。10.2Thumb指令集詳細(xì)介紹
16位Thumb指令集是從32位ARM指令集提取指令格式的,每條Thumb指令有相同處理器模型所對應(yīng)的32位ARM指令。根據(jù)完成的功能Thumb指令可以分為4類:數(shù)據(jù)處理指令;轉(zhuǎn)移指令;
Load/Store指令;異常中斷指令。
10.2.1數(shù)據(jù)處理指令Thumb數(shù)據(jù)處理指令包括一組高度優(yōu)化且相當(dāng)復(fù)雜的指令,范圍涵蓋編譯器通常需要的大多數(shù)操作。ARM指令支持在單條指令中完成一個操作數(shù)的移位及一個ALU操作,但Thumb指令集將移位操作和ALU操作分離為不同的指令,所以在Thumb指令中存在移位操作。本部分從以下幾個方面介紹:數(shù)據(jù)處理指令的二進(jìn)制編碼數(shù)據(jù)處理指令的分類
ARM指令與Thumb指令比較數(shù)據(jù)處理指令-二進(jìn)制編碼
數(shù)據(jù)處理指令的二進(jìn)制編碼如下圖:數(shù)據(jù)處理指令-指令格式
格式:opRd,Rn,RmopRd,Rn,#expr3opRd,#expr8其中:Rd目的寄存器。它也用做“opRd,#expr8”的第一個操作數(shù)。Rn第一操作數(shù)寄存器。Rm第二操作數(shù)寄存器。expr3表達(dá)式或3位立即數(shù),為取值在-7-+7范圍內(nèi)的整數(shù)。expr8表達(dá)式或8位立即數(shù),為取值在-255-+255范圍內(nèi)的整數(shù)。數(shù)據(jù)處理指令-分類按照數(shù)據(jù)處理指令的功能,可以將其分為以下幾類:算術(shù)運(yùn)算指令,它又分為以下幾類:移位和循環(huán)移位操作(ASR,LSL,LSR和ROR)比較指令(CMP和CMN)傳送和取負(fù)指令(MOV,MVN和NEG)測試指令(TST)
ADD與SUB—低寄存器加法和減法
ADD—高或低寄存器
ADD與SUB—SPADD—PC或SP相對偏移
ADC,SBC和MULARM指令與Thumb指令低寄存器比較:ARM指令Thumb指令MOVSRd,#<#imm8>
MOVRd,#<#imm8>
MVNSRd,Rm
MVNRd,Rm
CMPRN,#<#imm8>
CMPRn,#<#imm8>
CMPRn,Rm
CMPRn,Rm
CMNRn,Rm
CMNRn,Rm
TSTRn,Rm
TSTRn,Rm
ADDSRd,Rn,#<#imm3>ADDRd,Rn,#<#imm3>ADDSRd,Rn,#<#imm8>ADDRd,#<#imm8>
ADDSRd,Rn,RmADDRd,Rn,RmADCSRd,Rn,RmADCRd,Rm
SUBSRd,Rn,#<#imm3>SUBRd,Rn,#<#imm3>SUBSRd,
Rn,#<#imm8>SUBRd,#<#imm8>
SUBSRd,Rn,RmSUBRd,Rn,RmSBCSRd,Rn,RmSBCRd,Rm
RSBSRd,Rn,#0NEGRd,Rn
MOVSRd,Rm,LSL#<#sh>LSLRd,Rm,#<#sh>MOVSRd,Rd,LSLRsLSLRd,Rs
MOVSRd,Rm,LSR#<#sh>LSRRd,Rm,#<#sh>MOVSRd,Rd,LSRRsLSRRd,Rs
MOVSRd,Rm,ASR#<#sh>ASRRd,Rm,#<#sh>MOVSRd,Rd,RORRsASRRd,Rs
MOVSRd,Rd,RORRsRORRd,Rs
ANDSRd,Rd,RmANDRd,Rm
EORSRd,Rd,RmEORRd,Rm
ORRSRd,Rd,RmORRRd,Rm
BICSRd,Rd,RmBICRd,Rm
MULSRd,Rm,RdMULRd,Rm
ARM指令與Thumb指令高寄存器比較:ARM指令Thumb指令A(yù)DDRd,Rd,RmADDRd,Rm(1/2Hiregs)
CMPRn,Rm
CMPRn,Rm(1/2Hiregs)
ADDRd,PC,#<#imm8>ADDRd,PC,#<#imm8>ADDRd,SP,#<#imm8>ADDRd,SP,#<#imm8>ADDSP,
SP,#<#imm7>ADDSP,SP,#<#imm7>SUBSP,SP,#<#imm7>SUBSP,SP,#<#imm7>10.2.2Thumb轉(zhuǎn)移指令A(yù)RM指令有一個大的(24位)偏移域(offsetfield),這不可能在16位Thumb指令格式中表示。為此Thumb指令集有多種方法實現(xiàn)其子功能。本部分從以下幾個方面介紹:轉(zhuǎn)移指令的二進(jìn)制編碼轉(zhuǎn)移指令的匯編格式轉(zhuǎn)移指令的分類轉(zhuǎn)移指令-二進(jìn)制編碼轉(zhuǎn)移指令的二進(jìn)制編碼如下:轉(zhuǎn)移指令-匯編格式轉(zhuǎn)移指令的匯編格式如下:
轉(zhuǎn)移指令的典型用法如下:
1)短距離條件轉(zhuǎn)移指令可用于控制循環(huán)的退出。2)中等距離的無條件轉(zhuǎn)移指令用于實現(xiàn)goto功能。3)長距離子程序調(diào)用.B <cond><label> ;格式1 目標(biāo)為Thumb代碼B <label> ;格式2 目標(biāo)為Thumb代碼BL <label> ;格式3 目標(biāo)為Thumb代碼BLX <label> ;格式3a 目標(biāo)為ARM代碼B{L}X Rm ;格式4 目標(biāo)為ARM或Thumb代碼
1.B<label>指令格式:B{cond}lableBlable其中:lable是程序相對偏移表達(dá)式。通常是在同一代碼段內(nèi)的標(biāo)號。功能:分支指令。是Thumb指令集中唯一可以條件執(zhí)行的指令。舉例:Bloop;轉(zhuǎn)到loop處執(zhí)行。
BCSsectB;C置位跳轉(zhuǎn)。注意:若使用cond,則lable必須在當(dāng)前指令的-256--+256字節(jié)范圍內(nèi);若指令是無條件的,則lable必須在±2KB范圍內(nèi)。2.BL<label>指令格式:BLlable其中:lable是程序相對轉(zhuǎn)移表達(dá)式。功能:BL指令將下一條指令的地址拷貝到R14(LR鏈接寄存器),并轉(zhuǎn)移到lable執(zhí)行。舉例:BLsubC;注意:BL指令不能轉(zhuǎn)移到當(dāng)前指令±4MB以外的地址。3.BX(分支指令)
格式:BXRm其中:Rm裝有分支目的地址的ARM寄存器。功能:BX指令轉(zhuǎn)移到Rm存儲的地址。若Rm的位[0]置位,則指令集切換到Thumb狀態(tài)。若Rm的位[0]置0,則指令切換到ARM狀態(tài)。舉例:MOVR7,to_Thumb+1BXR7;R7的位[0]被置為1,所以指令集切換到Thumb狀態(tài)。注意:指令有選擇的切換指令集。Rm的位[0]不用于地址部分,而是用于決定ARM微處理器的工作狀態(tài):為0,切換到ARM狀態(tài);為1,切換到Thumb狀態(tài)。4.BLX帶鏈接分支,并可有選擇地交換指令格式:BLXRmBLXlable其中:Rm裝有分支目的地址的ARM寄存器。功能:拷貝下一條指令的地址到R14;引起處理器轉(zhuǎn)移到lable或Rm存儲的地址;如果Rm的位[0]清0,或使用“BLXlable”形式,則指令集切換到ARM狀態(tài)。舉例:BLXR2BLXR0BLXarmsub注意:指令不能轉(zhuǎn)移到當(dāng)前指令±4MB范圍以外的地址。Rm的位[0]不用于地址部分,若Rm的位[0]清0,則位[1]也必須清0,指令清除CPSR中的標(biāo)志T,M目的地址代碼被解釋為ARM代碼。lable是程序相對偏移表達(dá)式?!癇LXlable“始終引起微控制器切換到ARM狀態(tài)。10.2.3Load/Store指令Thumb的Load/Store指令又可以分為:單寄存器數(shù)據(jù)存取指令(LDR和STR)多寄存器數(shù)據(jù)存取指令(LDM和STM)
單寄存器數(shù)據(jù)存取指令(LDR和STR)二進(jìn)制編碼如下:1.單寄存器數(shù)據(jù)存取指令(LDR和STR)匯編格式如下:<op>Rd,[Rn,#<#off5>] ;<op>=LDR|LDRB|STR|STRB<op>Rd,[Rn,#<#off5>] ;<op>=LDRH|STRH<op>Rd,[Rn,Rm] ;<op>=LDR|LDRH|LDRSH|LDRB|LDRSB|STR|STRH|STRB<op>Rd,[PC,#<#off8>]<op>Rd,[SP,#<#off8>] ;<op>=LDR|STR//該兩條指令偏移量為8位2.多寄存器數(shù)據(jù)存取指令二進(jìn)制編碼如下:多寄存器數(shù)據(jù)存取指令
匯編格式如下:LDMIA Rn!,{<reglist>}STMIA Rn!,{<reglist>}POP {<reglist>{,pc}}PUSH {<reglist>{,lr}}10.2.4異常中斷指令Thumb軟件中斷指令Thumb軟件中斷指令的二進(jìn)制編
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 蔣兆和人物畫培訓(xùn)課件
- 公司月度質(zhì)量例會制度
- 儲能生產(chǎn)監(jiān)造制度
- 七上 4.1 和朋友在一起 2023秋
- 2025-2030細(xì)胞治療產(chǎn)業(yè)化進(jìn)程與政策紅利期投資價值白皮書
- 2025-2030細(xì)胞培養(yǎng)肉規(guī)?;a(chǎn)瓶頸突破與市場準(zhǔn)入分析報告
- 2025-2030細(xì)胞培養(yǎng)肉產(chǎn)業(yè)化瓶頸突破與替代蛋白市場教育分析報告
- 2025-2030線下美妝集合店運(yùn)營模式與盈利能力研究報告
- 2025-2030紙張印刷行業(yè)市場現(xiàn)狀需求變化投資評估策略發(fā)展報告
- 2025-2030紙業(yè)市場現(xiàn)狀供需分析及投資風(fēng)險評估規(guī)劃研究評估報告
- GB/T 3183-2025砌筑水泥
- 煅白制備工安全宣教考核試卷含答案
- 2025年湖南省公務(wù)員錄用考試《申論》真題(縣鄉(xiāng)卷)及答案解析
- 《經(jīng)典常談》分層作業(yè)(解析版)
- 粉塵清掃安全管理制度完整版
- 云南省2025年高二上學(xué)期普通高中學(xué)業(yè)水平合格性考試《信息技術(shù)》試卷(解析版)
- 2025年山東青島西海岸新區(qū)“千名人才進(jìn)新區(qū)”集中引才模擬試卷及一套完整答案詳解
- 四川省成都市樹德實驗中學(xué)2026屆九年級數(shù)學(xué)第一學(xué)期期末監(jiān)測試題含解析
- 與業(yè)主溝通技巧培訓(xùn)
- 辦公設(shè)備維護(hù)保養(yǎng)合同
- 普惠托育服務(wù)機(jī)構(gòu)申請表、承諾書、認(rèn)定書
評論
0/150
提交評論