嵌入式系統(tǒng)4(ARM指令系統(tǒng))_第1頁
嵌入式系統(tǒng)4(ARM指令系統(tǒng))_第2頁
嵌入式系統(tǒng)4(ARM指令系統(tǒng))_第3頁
嵌入式系統(tǒng)4(ARM指令系統(tǒng))_第4頁
嵌入式系統(tǒng)4(ARM指令系統(tǒng))_第5頁
已閱讀5頁,還剩36頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、西安電子科技大學計算機學院2ARM指令集簡述指令集簡述ARM指令格式指令格式ARM指令集編碼指令集編碼ARM尋址方式尋址方式ARM指令介紹指令介紹Thumb指令介紹指令介紹西安電子科技大學計算機學院3Load/Store 結(jié)構(gòu)結(jié)構(gòu)q在通用寄存器中進行操作;qload/store 從存儲器中讀某個值,操作完后再將其放回存儲器中。指令分類(指令分類(6類)類)q數(shù)據(jù)處理指令qload/store指令q跳轉(zhuǎn)指令qCPSR處理指令q異常產(chǎn)生指令q協(xié)處理器指令西安電子科技大學計算機學院4ADD R2, R1, R0 加法指令,R1R0R2ADDS R1, R1, #1 加法指令,R11R1 影響CPSR

2、寄存器(帶有S)LDR R0, R1 讀取R1地址上的存儲器單元內(nèi)容,執(zhí)行條件ALBEQ DATAEVEN 跳轉(zhuǎn)指令,執(zhí)行條件EQ,即相等則跳轉(zhuǎn)到DATAEVENSUBNES R1, R1, #0 x0D條件執(zhí)行減法運算(NE),R1-0 x0D=R1,影響CPSR寄存器(帶有S)西安電子科技大學計算機學院5基本格式基本格式S ,說明說明qopcode 指令助記符,如LDR,STR 等qcond執(zhí)行條件,如EQ,NE 等qS是否影響CPSR 寄存器的值qRd 目標寄存器qRn 存放第一操作數(shù)的寄存器qoperand2 第二個操作數(shù)注:為可選項西安電子科技大學計算機學院6西安電子科技大學計算機學

3、院7西安電子科技大學計算機學院8ARM狀態(tài)時,幾乎所有的指令均根據(jù)狀態(tài)時,幾乎所有的指令均根據(jù)CPSR中條件碼的狀態(tài)和指令的條件域有條中條件碼的狀態(tài)和指令的條件域有條件的執(zhí)行件的執(zhí)行q條件滿足時,指令被執(zhí)行,q否則指令被忽略(相當于NOP指令)。條件碼可用條件碼可用2個字符表示個字符表示q可以添加在指令助記符的后面和指令同時使用條件碼占指令碼的高條件碼占指令碼的高4位位q16種條件標志中,只有15種可用(如圖),第16種(1111)為系統(tǒng)保留。西安電子科技大學計算機學院9尋址方式是根據(jù)指令編碼中給出的地址碼字段來尋址方式是根據(jù)指令編碼中給出的地址碼字段來尋找真實操作數(shù)的方法尋找真實操作數(shù)的方法

4、分類分類q立即尋址q寄存器尋址q寄存器移位尋址q基址尋址q變址尋址q相對尋址q塊拷貝尋址q堆棧尋址西安電子科技大學計算機學院10也叫立即數(shù)尋址也叫立即數(shù)尋址q操作數(shù)就包含在指令的32位編碼中q如:ADDR0,R0,#1 ANDR3,R4,#0 xFF只有第二源操作數(shù)可用立即數(shù)只有第二源操作數(shù)可用立即數(shù)立即數(shù)要以立即數(shù)要以“”為前綴,為前綴,“”后加后加“0 x”或或“&”表示表示16 進制,進制,“0b”表示二進表示二進制,制,“0d”或缺省表示十進制?;蛉笔”硎臼M制。西安電子科技大學計算機學院11立即數(shù)不能占用立即數(shù)不能占用32位指令編碼空間的全部位指令編碼空間的全部比特位。比特位

5、。qARM指令為單周期指令,也不可能再取指一次用用12位數(shù)據(jù)表示位數(shù)據(jù)表示32位數(shù)據(jù)空間位數(shù)據(jù)空間q指令編碼中留給立即數(shù)的空間只有12位每個立即數(shù)都由一個每個立即數(shù)都由一個8位常數(shù)循環(huán)右移偶數(shù)位常數(shù)循環(huán)右移偶數(shù)位得到位得到q8 (常數(shù))+ 4(偶數(shù)移位個數(shù))= 12西安電子科技大學計算機學院12合法的立即數(shù)合法的立即數(shù)q0 xF200 (0b1111_0010_0000_0000)q0 x110000(0b0001_0001_0000_0000_0000_0000)q0 x12800(0b0001_0010_1000_0000_0000_0000)非法的立即數(shù)非法的立即數(shù)q0 x1010 (0

6、b0001_0000_0001_0000)q0 x00102(0b0000_0000_0001_0000_0010)q0 xFF1000(0b1111_1111_0001_0000_0000_0000)西安電子科技大學計算機學院13操作數(shù)的值在寄存器中,指令中的地址碼操作數(shù)的值在寄存器中,指令中的地址碼字段指出的是寄存器編號,指令執(zhí)行時直字段指出的是寄存器編號,指令執(zhí)行時直接取出寄存器值操作。接取出寄存器值操作。q如:MOV R1,R2; R2 - R1q SUBR0,R1,R2;R1 - R2 - R0西安電子科技大學計算機學院14寄存器移位尋址是寄存器移位尋址是ARM指令集指令集特有特有的

7、尋址的尋址方式,是寄存器尋址方式的增強形式方式,是寄存器尋址方式的增強形式q如:MOV R0,R2,LSL #3;R2 的值左移3 位,結(jié)果放入R0,即R0 = R2 * 8qANDS R1,R1,R2,LSL R3 ;R2 的值左移R3 位,然后和R1 相與操作,結(jié)果放入R1注:第注:第2操作數(shù)的操作數(shù)的12位編碼空間有冗余位位編碼空間有冗余位西安電子科技大學計算機學院15LSL (Logical Shift Left) 邏輯左移邏輯左移LSR (Logical Shift Right) 邏輯右移邏輯右移ASL (Arithmetic Shift Left) 算術(shù)左移算術(shù)左移ASR (Ari

8、thmetic Shift Right) 算術(shù)右移算術(shù)右移ROR (Rotate Right) 循環(huán)右移循環(huán)右移RRX (Rotate Right Extended by 1 Place)帶擴展的帶擴展的循環(huán)右移,連同循環(huán)右移,連同C標志循環(huán)右移標志循環(huán)右移一一位。位。西安電子科技大學計算機學院16西安電子科技大學計算機學院17移位位數(shù)可以用立即數(shù)移位位數(shù)可以用立即數(shù)(5位位)或寄存器方式或寄存器方式給出給出q如:ADDR3,R2,R1,LSR #2 ADDR3,R2,R1,LSR R4 西安電子科技大學計算機學院18Load/Store指令的尋址方式指令的尋址方式利用一個寄存器的值作為存儲器

9、地址利用一個寄存器的值作為存儲器地址q如:LDR R0,R1 STRR0,R1西安電子科技大學計算機學院19Load/Store指令的尋址方式指令的尋址方式存儲器地址由兩部分組成存儲器地址由兩部分組成q基址寄存器q地址偏移量地址偏移量的形式地址偏移量的形式q立即數(shù)q寄存器q寄存器及一個移位常數(shù)存儲器地址為基址寄存器值加上存儲器地址為基址寄存器值加上/減去立即減去立即數(shù)偏移量數(shù)偏移量U控制位為控制位為1時加上偏移量;時加上偏移量;U控制位為控制位為0時時減去偏移量減去偏移量偏移量占偏移量占12bit(offset_12)例子:例子:qLDR R0,R1,#4qLDR R0,R1,#-4西安電子科

10、技大學計算機學院20存儲器地址為基址寄存器值加上存儲器地址為基址寄存器值加上/減去索引減去索引寄存器的值寄存器的值U控制位為控制位為1時加上索引寄存器的值;時加上索引寄存器的值;U控控制位為制位為0時減去索引寄存器的值時減去索引寄存器的值例子:例子:qLDR R0,R1,R2qLDR R0,R1,-R2西安電子科技大學計算機學院21存儲器地址為基址寄存器值加上存儲器地址為基址寄存器值加上/減去一個減去一個地址偏移量地址偏移量U控制位為控制位為1時加上偏移量;時加上偏移量;U控制位為控制位為0時時減去偏移量減去偏移量該偏移量由索引寄存器通過移位得到該偏移量由索引寄存器通過移位得到q移位的方法如“

11、寄存器移位尋址”方式例子:例子:qLDR R0,R1,R2,LSL #2西安電子科技大學計算機學院22西安電子科技大學計算機學院23前變址模式前變址模式qLDRR0,R1,#4 ;R0 - mem32R1+4自動變址模式(事先更新方式)自動變址模式(事先更新方式)qLDRR0,R1,#4!;R0 - mem32R1+4 ;R1 - R1+4后變址模式(事后更新方式)后變址模式(事后更新方式)qLDRR0,R1 ,#4;R0 - mem32R1 ;R1 - R1+43種地址偏移格式種地址偏移格式q立即數(shù)q寄存器q寄存器及一個移位常數(shù)3種變址模式種變址模式q前變址q自動變址q后變址可以組合出總共可

12、以組合出總共9種類型的變址尋址方式種類型的變址尋址方式西安電子科技大學計算機學院24西安電子科技大學計算機學院25變址尋址的一種變通變址尋址的一種變通其基址寄存器是程序計數(shù)器其基址寄存器是程序計數(shù)器PC主要用于分支指令主要用于分支指令例子:例子:BLSUBR ;轉(zhuǎn)移到SUBR;返回到此處SUBR;子程序入口MOV PC,R14;返回西安電子科技大學計算機學院26塊拷貝尋址是多寄存器傳送指令塊拷貝尋址是多寄存器傳送指令LDM/STM的尋址方式的尋址方式寄存器組可以是寄存器組可以是16個通用寄存器的任意子集個通用寄存器的任意子集地址增長順序地址增長順序qIA (Increment After)qI

13、B (Increment Before)qDA (Decrement After)qDB (Decrement Before)西安電子科技大學計算機學院27西安電子科技大學計算機學院28堆棧是一塊用于保存數(shù)據(jù)的連續(xù)內(nèi)存堆棧是一塊用于保存數(shù)據(jù)的連續(xù)內(nèi)存堆棧操作的特點是先進后出堆棧操作的特點是先進后出堆棧增長方式堆棧增長方式q向上增長(遞增)q向下增長(遞減)堆棧指針指向的數(shù)據(jù)位置堆棧指針指向的數(shù)據(jù)位置q滿堆棧q空堆棧西安電子科技大學計算機學院29滿遞增:指令如滿遞增:指令如LDMFA,STMFA 等等空遞增:指令如空遞增:指令如LDMEA,STMEA 等等滿遞減:指令如滿遞減:指令如LDMFD,

14、STMFD 等等空遞減:指令如空遞減:指令如LDMFD,STMFD 等等符號含義:符號含義:qFD (Full Decrement)qED (Empty Decrement)qFA (Full Aggrandizement)qEA (Empty Aggrandizement)西安電子科技大學計算機學院30西安電子科技大學計算機學院31ARM指令中的堆棧形式指令中的堆棧形式qSTMFDSP!R1-R7,LRqLDMFD SP!R1-R7,LRq注:一定要帶有!Thumb指令中的堆棧形式指令中的堆棧形式qPUSH R1-R7,LRqPOP R1-R7,PC堆棧和塊拷貝都是利用批量堆棧和塊拷貝都是利

15、用批量Load/Store指令指令的尋址方式,有時也可歸為一類的尋址方式,有時也可歸為一類西安電子科技大學計算機學院325.1 數(shù)據(jù)處理指令數(shù)據(jù)處理指令q主要完成寄存器中數(shù)據(jù)的算術(shù)和邏輯運算操作q數(shù)據(jù)寬度:所有操作數(shù)都是32位寬度q尋址方式 立即數(shù)尋址 寄存器尋址 寄存器移位尋址q分類 數(shù)據(jù)傳送指令 算術(shù)、邏輯運算指令 比較、測試指令 乘法指令西安電子科技大學計算機學院33單寄存器存取指令(單寄存器存取指令(LDR和和STR)q加載/存儲字(32位對齊)q加載/存儲半字H(16位對齊)q加載/存儲字節(jié)B(8位對齊)多寄存器存取指令(多寄存器存取指令(LDM 和和STM)q可以實現(xiàn)在一組寄存器和

16、一塊連續(xù)的內(nèi)存單元之間傳輸數(shù)據(jù)q堆棧操作和塊拷貝存儲器和寄存器交換指令存儲器和寄存器交換指令SWPq使用SWP可實現(xiàn)信號量操作尋址方式:基址尋址、變址尋址尋址方式:基址尋址、變址尋址西安電子科技大學計算機學院34Bq跳轉(zhuǎn)到指定的地址執(zhí)行程序BLq將下一條指令的地址拷貝到鏈接寄存器(R14/LR)中,然后跳轉(zhuǎn)到指定地址運行程序BXq帶狀態(tài)切換的跳轉(zhuǎn)指令BLXq帶連接和狀態(tài)切換的跳轉(zhuǎn)指令注:跳轉(zhuǎn)的范圍是注:跳轉(zhuǎn)的范圍是32MB尋址方式:相對尋址尋址方式:相對尋址西安電子科技大學計算機學院35狀態(tài)寄存器與通用寄存器之間的傳送指令狀態(tài)寄存器與通用寄存器之間的傳送指令qMRSqMSR異常產(chǎn)生指令異常產(chǎn)生

17、指令qSWI 軟件中斷指令qBKPT斷點中斷指令 (ARMv5以上)協(xié)處理器指令協(xié)處理器指令西安電子科技大學計算機學院36Thumb指令集是針對代碼密度的問題而提出的。指令集是針對代碼密度的問題而提出的。可以看作是可以看作是ARM指令集的子集。指令集的子集。所有所有Thumb指令均有對應(yīng)的指令均有對應(yīng)的ARM指令,而指令,而Thumb編程模型也對應(yīng)于編程模型也對應(yīng)于ARM模型。模型。Thumb是一個不完整的體系結(jié)構(gòu),不能指望處理是一個不完整的體系結(jié)構(gòu),不能指望處理器只執(zhí)行器只執(zhí)行Thumb代碼而不支持代碼而不支持ARM指令集。一般指令集。一般Thumb代碼只需支持通用功能,必要時可以借助代碼只

18、需支持通用功能,必要時可以借助于于ARM指令集(例:所有異常自動進入指令集(例:所有異常自動進入ARM模式)模式)應(yīng)用程序可以靈活的將應(yīng)用程序可以靈活的將ARM指令和指令和Thumb程序混程序混合,以便提高性能和代碼密度。同時達到降低功合,以便提高性能和代碼密度。同時達到降低功耗、節(jié)約成本和提高性能的目的。耗、節(jié)約成本和提高性能的目的。西安電子科技大學計算機學院37在任何時刻,對指令流的解釋取決于在任何時刻,對指令流的解釋取決于CPSR的第的第5位,即位位,即位T,若,若T置位,則認置位,則認為指令流為為指令流為16位的位的Thumb指令;否則為標指令;否則為標準的準的ARM指令。指令。并不是所有的并不是所有的ARM處理器都支持處理器都支持Thumb指令。只有在命名中有字母指令。只有在命名中有字母T的才支持,的才支持,例如以上提到的例如以上提到的ARM7TDMI。西安電子科技大學計算機學院38進入進入Thumb模式模式q復位后,ARM啟動并執(zhí)行ARM指令。轉(zhuǎn)向執(zhí)行Thumb指令的通常方法是執(zhí)行一條交換轉(zhuǎn)移指令BX。若BX指令指定的寄存器的最低位為1,則將T置位,并將程序計數(shù)器切換為寄存器其它位給出的地址q異常返回也可以將微處理器從ARM狀態(tài)轉(zhuǎn)換為Thumb狀態(tài)。通常這種指令用于返回到進入異常前所執(zhí)行的指令流,而不是特地用于轉(zhuǎn)換到Thumb模式西安電子科技大學計算機

溫馨提示

  • 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)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論