嵌入式系統(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ù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

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

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

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

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

5、。qARM指令為單周期指令,也不可能再取指一次用用12位數(shù)據(jù)表示位數(shù)據(jù)表示32位數(shù)據(jù)空間位數(shù)據(jù)空間q指令編碼中留給立即數(shù)的空間只有12位每個(gè)立即數(shù)都由一個(gè)每個(gè)立即數(shù)都由一個(gè)8位常數(shù)循環(huán)右移偶數(shù)位常數(shù)循環(huán)右移偶數(shù)位得到位得到q8 (常數(shù))+ 4(偶數(shù)移位個(gè)數(shù))= 12西安電子科技大學(xué)計(jì)算機(jī)學(xué)院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)西安電子科技大學(xué)計(jì)算機(jī)學(xué)院13操作數(shù)的值在寄存器中,指令中的地址碼操作數(shù)的值在寄存器中,指令中的地址碼字段指出的是寄存器編號(hào),指令執(zhí)行時(shí)直字段指出的是寄存器編號(hào),指令執(zhí)行時(shí)直接取出寄存器值操作。接取出寄存器值操作。q如:MOV R1,R2; R2 - R1q SUBR0,R1,R2;R1 - R2 - R0西安電子科技大學(xué)計(jì)算機(jī)學(xué)院14寄存器移位尋址是寄存器移位尋址是ARM指令集指令集特有特有的

7、尋址的尋址方式,是寄存器尋址方式的增強(qiáng)形式方式,是寄存器尋址方式的增強(qiáng)形式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位編碼空間有冗余位位編碼空間有冗余位西安電子科技大學(xué)計(jì)算機(jī)學(xué)院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)帶擴(kuò)展的帶擴(kuò)展的循環(huán)右移,連同循環(huán)右移,連同C標(biāo)志循環(huán)右移標(biāo)志循環(huán)右移一一位。位。西安電子科技大學(xué)計(jì)算機(jī)學(xué)院16西安電子科技大學(xué)計(jì)算機(jī)學(xué)院17移位位數(shù)可以用立即數(shù)移位位數(shù)可以用立即數(shù)(5位位)或寄存器方式或寄存器方式給出給出q如:ADDR3,R2,R1,LSR #2 ADDR3,R2,R1,LSR R4 西安電子科技大學(xué)計(jì)算機(jī)學(xué)院18Load/Store指令的尋址方式指令的尋址方式利用一個(gè)寄存器的值作為存儲(chǔ)器

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

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

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

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

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

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

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

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

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

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

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論