版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
Thumb指令集23.6.1Thumb指令的特點Thumb指令的代碼密度高;Thumb指令集是ARM指令集的一個子集,不是一個完整的體系結(jié)構(gòu);不能用Thumb指令編制一個完整的程序。ARM和Thumb指令的功能是相近的;ARM狀態(tài)和Thumb狀態(tài)的區(qū)別也表現(xiàn)在程序狀態(tài)寄存器中,CPSR[5]位T就是標志位;Thumb指令16位編碼所包含的信息較ARM指令少;Thumb指令與ARM指令一樣,是32位的數(shù)據(jù)操作。33.6.2Thumb指令vs.ARM指令Thumb指令集沒有:和協(xié)處理器相關(guān)的指令;數(shù)據(jù)交換指令;乘加指令和長乘法指令;CPSR和SPSR訪問指令。Thumb指令增加:邏輯移位指令;堆棧指令PUSH和出棧指令POP。Thumb指令除分支指令外,都是無條件指令。Thumb指令通常只使用兩個操作數(shù)。Thumb沒有可選的S后綴,每條指令都可以刷新條件標志位。43.6.3Thumb指令集中的數(shù)據(jù)傳送指令5Thevariousassemblerformatsare:63.6.3.1立即數(shù)偏移的無符號字/字節(jié)傳送指令指令:LDR,STR,LDRB,STRB用于在寄存器和存儲器之間進行無符號的字和字節(jié)傳送,其地址的表達式是基址寄存器和一個立即數(shù)的偏移。指令格式:
LDR/STR Rd,[Rb,#立即數(shù)] LDRB/STRB Rd,[Rb,#立即數(shù)]Rd是源/目標寄存器,使用范圍為R0~R7;Rb是地址基址寄存器,使用范圍為R0~R7;立即數(shù)是字傳送使用7位,字節(jié)傳送使用5位;立即數(shù)偏移只能是正數(shù)或0,不能是負數(shù);使用事先尋址方式,不能更新;字傳送要求字對齊。73.6.3.2寄存器偏移的無符號字/字節(jié)傳送指令指令:LDR,STR,LDRB,STRB用于在寄存器和存儲器之間進行無符號的字和字節(jié)傳送,其地址的表達式是基址寄存器和一個寄存器的偏移。指令格式:
LDR/STR Rd,[Rb,Ri] LDRB/STRB Rd,[Rb,Ri]Rd是源/目標寄存器,使用范圍為R0~R7;Rb是地址基址寄存器,使用范圍為R0~R7;Ri是偏移寄存器,使用范圍為R0~R7;使用事先尋址方式,不能更新;字傳送要求字對齊。83.6.3.3立即數(shù)偏移的無符號半字傳送指令指令:LDRH,STRH用于在寄存器和存儲器之間進行無符號的半字傳送,其地址的表達式是基址寄存器和一個立即數(shù)的偏移。指令格式:
LDRH/STRH Rd,[Rb,#立即數(shù)]Rd是源/目標寄存器,使用范圍為R0~R7;Rb是地址基址寄存器,使用范圍為R0~R7;立即數(shù)是6位無符號數(shù),不得大于64;只能加載或存儲低16位;使用事先尋址方式,不能更新;半字傳送要求半字對齊。93.6.3.4寄存器偏移的無符號半字傳送指令和寄存器偏移的帶符號字節(jié)/半字加載指令指令:LDRH,STRG,LDSB,LDSH用于在寄存器和存儲器之間進行無符號的半字傳送以及帶符號的字節(jié)/半字加載,其地址的表達式是基址寄存器和一個寄存器的偏移。指令格式:
LDRH/STRHRd,[Rb,Ri] LDSB/LDSHRd,[Rb,Ri]Rd是源/目標寄存器,使用范圍為R0~R7;Rb是地址基址寄存器,使用范圍為R0~R7;Ri是偏移寄存器,使用范圍為R0~R7;半字加載時,加載低16位,高位進行符號/無符號擴展;使用事先尋址方式,不能更新;半字傳送要求半字對齊。103.6.3.5用PC和SP做基址的數(shù)據(jù)傳送指令指令:LDR,STR用于在寄存器和存儲器之間進行無符號的數(shù)據(jù)傳送,其地址表達式的基址是PC或SP。指令格式:
LDR Rd,[PC,#立即數(shù)] LDR/STR Rd,[SP,#立即數(shù)]Rd是源/目標寄存器,使用范圍為R0~R7;SP是堆棧指針做地址基址;PC是程序計數(shù)器做地址基址;立即數(shù)是無符號10位的地址偏移值,小于1024;使用事先尋址方式,不能更新;字傳送要求字對齊。113.6.3.6多寄存器的數(shù)據(jù)傳送指令指令:LDMIA,STMIA用于在寄存器和存儲器之間進行成組的數(shù)據(jù)傳送,其地址表達式只用一個無偏移的基址寄存器。指令格式:
LDMIA/STMIARb!,{寄存器列表}Rb是地址基址寄存器,使用范圍為R0~R7;!后綴是寫回標志,必須使用;寄存器列表是從R0~R7的任意組合,寄存器分隔使用逗號;無論加載還是存儲,每傳送一個數(shù)據(jù),基址地址就自動增4,屬于事后更新尋址方式;寄存器在列表中是從小到大排列,無論加載還是存儲,最小寄存器總是指向最初的基址地址;Rb可以在列表中,但Rb必須是寄存器列表中最小的,否則結(jié)果不可預(yù)測;后綴IA是表明每傳送一次數(shù)據(jù)地址自動增4。12133.6.3.7棧操作指令指令:PUSH,POP用于在寄存器和存儲器之間進行成組的數(shù)據(jù)傳送,其地址表達式是隱含的堆棧指針。指令格式:
PUSH/POP {寄存器列表} PUSH {寄存器列表,LR} POP {寄存器列表,PC}LR是鏈接寄存器;PC是程序計數(shù)器;寄存器列表是從R0~R7的任意組合,寄存器分隔使用逗號;堆棧指針是隱含的地址基址,Thumb指令中的堆棧是滿棧遞減的,堆棧向下增長,堆棧指針總是指向最后入棧的數(shù)據(jù);寄存器在列表中是從小到大排列,無論加載還是存儲,最小寄存器總是指向最初的基址地址;但使用POP指令且PC出現(xiàn)在列表中時,從棧區(qū)賦給PC的數(shù)據(jù)將引起程序的跳轉(zhuǎn),這只能用在子程序的返回。143.6.4Thumb指令集的分支指令Thumb指令集包含4條分支指令:無條件分支指令;條件分支指令;帶鏈接分支指令;狀態(tài)切換指令。15163.6.4.1無條件分支指令無條件分支指令B能夠使程序產(chǎn)生一次無條件跳轉(zhuǎn)。指令格式:
B語句標號語句標號通常在同一程序段內(nèi),地址范圍不超過±2048字節(jié);以PC為基址的相對偏移跳轉(zhuǎn),跳轉(zhuǎn)方向可以向前,也可以向后;語句標號處的地址必須是半字對齊的。173.6.4.2條件分支指令條件分支指令B能夠使程序產(chǎn)生一次有條件跳轉(zhuǎn)。指令格式:
B{cond}語句標號語句標號通常在同一程序段內(nèi),地址范圍不超過±254字節(jié);cond是條件后綴,共14種;指令滿足條件時分支跳轉(zhuǎn),否則不分支;以PC為基址的相對偏移跳轉(zhuǎn),跳轉(zhuǎn)方向可以向前,也可以向后;語句標號處的地址必須是半字對齊的。183.6.4.3帶鏈接的長分支指令帶鏈接的長分支指令BL能夠使程序產(chǎn)生長跳轉(zhuǎn),同時把分支處地址保存在LR中。指令格式:
BL語句標號語句標號是一條長跳轉(zhuǎn),地址范圍可以用一個23位的帶符號數(shù)值表達;Thumb指令編碼是16位,一條指令是不能實現(xiàn)23位的地址編碼的,該語句實際分解乘兩條指令來實現(xiàn);以PC為基址的相對偏移跳轉(zhuǎn),跳轉(zhuǎn)方向可以向前,也可以向后;語句標號處的地址必須是半字對齊的。193.6.4.4狀態(tài)切換的分支指令狀態(tài)切換的分支指令BX能夠使程序產(chǎn)生分支,同時使程序從一個指令狀態(tài)跳轉(zhuǎn)到另一個指令狀態(tài)。指令格式:
BXRs BXHsRs是Thumb指令集的通用寄存器R0~R7,其中數(shù)據(jù)作為分支目標地址;Hs是高位寄存器R8~R15,在Thumb指令集中用H8~H15表達,其中數(shù)據(jù)作為分支目標地址;以寄存器數(shù)據(jù)作為絕對地址的分支指令,跳轉(zhuǎn)方向可以向前,也可以向后;寄存器中的地址是目標地址,其中的最低位[0]不是地址信息。當(dāng)[0]為1時,表明目標地址處是Thumb指令;當(dāng)[0]為0時,表明目標地址處是ARM指令,要求字對齊。203.6.5Thumb指令集的數(shù)據(jù)處理指令Thumb指令集中的數(shù)據(jù)處理指令包括算術(shù)運算指令邏輯運算指令寄存器之間的數(shù)據(jù)傳送指令21223.6.5Thumb指令集的數(shù)據(jù)處理指令3.6.5.1使用3個寄存器(或兩個寄存器、一個立即數(shù))的加減算術(shù)運算指令指令格式:
ADD/SUBRd,Rs,Rn ADD/SUBRd,Rs,#立即數(shù)Rs是Thumb指令集的通用寄存器R0~R7;Rn是Thumb指令集的通用寄存器R0~R7;Rd是Thumb指令集的通用寄存器R0~R7,保存操作結(jié)果;立即數(shù)是3位無符號數(shù)值,不能大于7;會刷新程序狀態(tài)寄存器的條件標志。233.6.5.2使用1個寄存器和1個立即數(shù)的數(shù)據(jù)處理指令共有4條指令:ADD,SUB,MOV,CMP指令格式:
OpcodeRd,#立即數(shù)Opcode是操作指令,指ADD,SUB,MOV,CMP等4條指令;Rd是Thumb指令集的通用寄存器R0~R7,保存操作結(jié)果;立即數(shù)是8位無符號數(shù)值,不能大于255;會刷新程序狀態(tài)寄存器的條件標志。243.6.5.3使用2個寄存器的數(shù)據(jù)處理指令共有16條指令:AND,EOR,ORR,BIC;ADC,SBC,MUL;CMP,CMN;LSL,LSR,ASR,ROR;NEG,MVN;TST253.6.5.3.1邏輯操作指令共有4條指令:AND,EOR,ORR,BIC指令格式:
OpcodeRd,RsOpcode是操作指令;Rd是Thumb指令集的通用寄存器R0~R7,保存操作結(jié)果;Rs是源寄存器R0~R7;AND,EOR,ORR指令與寄存器的順序無關(guān),而BIC指令是有關(guān)的;會刷新程序狀態(tài)寄存器的條件標志。263.6.5.3.2算術(shù)運算指令共有3條指令:ADC,SBC,MUL指令格式:
OpcodeRd,RsOpcode是操作指令;Rd是Thumb指令集的通用寄存器R0~R7,保存操作結(jié)果;Rs是源寄存器R0~R7;會刷新程序狀態(tài)寄存器的條件標志。273.6.5.3.3邏輯操作指令共有2條指令:CMP,CMN指令格式:
OpcodeRd,RsOpcode是操作指令;Rd是Thumb指令集的通用寄存器R0~R7;Rs是源寄存器R0~R7;會刷新程序狀態(tài)寄存器的條件標志。283.6.5.3.4邏輯移位操作指令共有4條指令:LSL,LSR,ASR,ROR指令格式:
OpcodeRd,RsOpcode是操作指令;Rd是Thumb指令集的通用寄存器R0~R7,保存操作結(jié)果;Rs是源寄存器R0~R7,其中的數(shù)值是Rd移位的位數(shù);會刷新程序狀態(tài)寄存器的條件標志。293.6.5.3.5寄存器傳送指令共有2條指令:NEG,MVN指令格式:
OpcodeRd,RsOpcode是操作指令;Rd是Thumb指令集的通用寄存器R0~R7,保存操作結(jié)果;Rs是源寄存器R0~R7;會刷新程序狀態(tài)寄存器的條件標志。303.6.5.3.6測試指令共有1條指令:TST指令格式:
OpcodeRd,RsOpcode是操作指令;Rd是Thumb指令集的通用寄存器R0~R7;Rs是源寄存器R0~R7;會刷新程序狀態(tài)寄存器的條件標志。313.6.5.4對寄存器進行移位并傳送的操作指令共有3條指令:LSL,LSR,ASR指令格式:
OpcodeRd,Rs,#立即數(shù)Opcode是操作指令;Rd是Thumb指令集的通用寄存器R0~R7,保存操作結(jié)果;Rs是源寄存器R0~R7,對其中的內(nèi)容進行移位;移位位數(shù)不能大于31;會刷新程序狀態(tài)寄存器的條件標志。323.6.5.5與高位寄存器有關(guān)的數(shù)據(jù)處理指令共有3條指令:ADD,CMP,MOV指令格式:
OpcodeRd,RsOpcode是操作指令;Rd是Thumb指令集的通用寄存器R0~R15,保存操作結(jié)果;Rs是源寄存器R0~R15,對其中的內(nèi)容進行移位;CMP指令會刷新程序狀態(tài)寄存器的條件標志。333.6.5.6使用PC和SP的加法指令Thumb指令中有一條對堆棧指針SP的加法指令和一條對PC的加法指令。指令格式:
ADDRd,PC,#立即數(shù)
ADDRd,SP,#立即數(shù)Rd是Thumb指令集的通用寄存器R0~R7;PC是程序計數(shù)器,做源寄存器;SP是堆棧指針,做源寄存器;立即數(shù)是一個10位的無符號數(shù);立即數(shù)必須字對齊;當(dāng)把PC作為源寄存器時,PC中的值是指令處的地址加4;不影響程序條件標志位。343.6.5.7堆棧指針加偏移的加法指令Thumb指令中有一條對堆棧指針SP加偏移的加法指令。指令格式:
ADDSP,#立即數(shù)
ADDSP,#-立即數(shù)SP是堆棧指針,做目標寄存器;立即數(shù)是一個9位的無符號數(shù);立即數(shù)必須字對齊;表達式中可以使用負號,堆棧指針可以向前偏移,也可以向后偏移。35Thevariousinstructionformatsare:36ARMinstruction ThumbinstructionMOVSRd,#<#imm8> ;MOVRd,#<#imm8>MVNSRd,Rm ;MVNRd,RmCMPRn,#<#imm8> ;CMPRn,#<#imm8>CMPRn,Rm ;CMPRn,RmCMNRn,Rm ;CMNRn,RmTSTRn,Rm ;TSTRn,RmADDSRd,Rn,#<#imm3> ;ADDRd,Rn,#<#imm3>ADDSRd,Rd,#<#imm8> ;ADDRd,#<#imm8>ADDSRd,Rn,Rm ;ADDRd,Rn,RmADCSRd,Rd,Rm ;ADCRd,RmSUBSRd,Rn,#<#imm3> ;SUBRd,Rn,#<#imm3>SUBSRd,Rd,#<#imm8> ;SUBRd,#<#imm8>SUBSRd,Rn,Rm ;SUBRd,Rn,RmSBCSRd,Rd,Rm ;SBCRd,RmRSBSRd,Rn,#0 ;NECRd,RnMOVSRd,Rm,LSL#<#sh> ;LSLRd,Rm,#<#sh>EquivalentARMinstruction37;ARMinstruction ThumbinstructionMOVSRd,Rd,LSLRs ;LSLRd,RsMOVSRd,Rm,LSR#<#sh> ;LSRRd,Rm,#<#sh>MOVSRd,Rd,LSRRs ;LSRRd,RsMOVSRd,Rm,ASR#<#sh> ;ASRRd,Rm,#<#sh>MOVSRd,Rd,ASRRs ;ASRRd,RsMOVSRd,Rd,RORRs ;RORRd,RsANDSRd,Rd,Rm ;ANDRd,RmEORSRd,Rd,Rm ;EORRd,RmORRSRd,Rd,Rm ;ORRRd,RmBICSRd,Rd,Rm ;BIGRd,RmMULSRd,Rm,Rd ;MULRd,RmEquivalentARMinstruction38Instructionsthatoperatewithoronthe'Hi'registers(r8tor15),insomecasesincombinationwitha'Lo'register:;ARMinstruction ThumbinstructionADDRd,Rd,Rm ;ADDRd,Rm(1/2Hiregs)CMPRn,Rm ;CMPRn,Rm(1/2Hiregs)MOVRd,Rm ;MOVRd,Rm(1/2Hiregs)ADDRd,PC,#
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025版屋面防水工程承包合同(含屋頂綠化植物養(yǎng)護服務(wù))3篇
- 2025版外貿(mào)信用保險合同范本英文版3篇
- 《我的家鄉(xiāng)》課件
- 2025年度美容院美容院員工福利保障合同4篇
- 2025年個人房產(chǎn)抵押合同修訂版
- 二零二五年度鐵路施工挖機作業(yè)安全與保障合同3篇
- 二零二五版綠色環(huán)保民房物業(yè)管理合同4篇
- 2025版宅基地買賣轉(zhuǎn)讓合同含農(nóng)村土地整治及補償協(xié)議3篇
- 二零二五版幕墻工程節(jié)能評估與認證合同4篇
- 孤殘兒童關(guān)愛意識提升策略研究與實踐考核試卷
- 消防產(chǎn)品目錄(2025年修訂本)
- 地方性分異規(guī)律下的植被演替課件高三地理二輪專題復(fù)習(xí)
- 光伏項目風(fēng)險控制與安全方案
- 9.2提高防護能力教學(xué)設(shè)計 2024-2025學(xué)年統(tǒng)編版道德與法治七年級上冊
- 催收培訓(xùn)制度
- 練習(xí)20連加連減
- 五四制青島版數(shù)學(xué)五年級上冊期末測試題及答案(共3套)
- 商法題庫(含答案)
- 鋼結(jié)構(gòu)用高強度大六角頭螺栓連接副 編制說明
- 溝通與談判PPT完整全套教學(xué)課件
- 移動商務(wù)內(nèi)容運營(吳洪貴)項目四 移動商務(wù)運營內(nèi)容的傳播
評論
0/150
提交評論