版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、4.1ARM系列處理器指令集概述4.1.1 ARM/Thumb/Thumb-2指令集演進(jìn)4.1.2 ARM/Thumb/Thumb-2指令特性4.1.3 ARM匯編器基本語(yǔ)法4.1.1ARM/Thumb/Thumb-2指令集演進(jìn)1)計(jì)算機(jī)指令集分類(lèi):(1)復(fù)雜指令集(CISC),特點(diǎn):每條指令的編碼長(zhǎng)度不固定,可以是8位、16位、32位甚至更長(zhǎng)。CISC(complex instruction set computer)Intel 80x86系列微處理器是典型的CISC計(jì)算機(jī),因?yàn)橹噶罹幋a長(zhǎng)短不一,導(dǎo)致指令譯碼器結(jié)構(gòu)復(fù)雜, 譯碼電路需要更多的基本邏輯單元來(lái)實(shí)現(xiàn)。(2)精簡(jiǎn)指令集計(jì)算機(jī)RISC,
2、特點(diǎn):每條指令長(zhǎng)度固定16位或32位。RISC(reduced instruction set computer)為了簡(jiǎn)化指令譯碼器結(jié)構(gòu),降低譯碼電路復(fù)雜度,從而降低處理器功耗, 提升計(jì)算機(jī)整體性能,RISC微處理器得于提出并得到快速發(fā)展,ARM系列處理器是典型的RISC指令集處理器。2)ARM7-ARM11指令集歷史原因,從ARM7TDMI開(kāi)始,形式上相對(duì)獨(dú)立的指令集:ARM處理器一直支持兩種ARM指令集(32位),處理器執(zhí)行這類(lèi)指令應(yīng)處于ARM狀態(tài);優(yōu)點(diǎn):指令功能強(qiáng)大,效率高,一條指令可完成功能多Thumb指令集(16位),處理器執(zhí)行這類(lèi)指令應(yīng)處于Thumb狀態(tài)。優(yōu)點(diǎn):代碼密度高,但性能比
3、ARM指令稍低一些ARM7TDMI的苦惱:為了兼顧性能和代碼密度需要在2套指令集間頻繁切換。ARM指令Thumb指令兩者之間的切換還是比較相當(dāng)?shù)穆闊t~(yú)與熊掌不可兼得?于是ARM公司在ARMv7-M架構(gòu)上,開(kāi)發(fā)了一套指令集稱(chēng)為T(mén)HUMB-2指令集的指令集。執(zhí)行效率低代碼密度低代碼密度高執(zhí)行效率高3)ARM架構(gòu)與指令集演進(jìn)關(guān)系A(chǔ)RMv7-M支持ARM、THUMB、THUMB-2指令集M3支持Thumb-2 的一個(gè)子集,包含:所有基本的16位和32位Thumb-2指令 。16位/32位Thumb2指令集,既有32位指令集高效處理能力,又具有16位指令的代碼空間壓縮能力,而且還無(wú)需在32位ARM狀態(tài)
4、與16Thumb狀態(tài)間來(lái)回切換,所有Thumb2指令只能在Thumb狀態(tài)下執(zhí)行。4)Thumb-2指令集與Thumb指令集的關(guān)系Thumb-2真不愧是一個(gè)突破性的指令集。它強(qiáng)大,它易用,它輕佻,它高效。 Thumb-2是16位Thumb指令集的一個(gè)超集,在Thumb-2中, 16位指令首次與32位指令并存,結(jié)果在Thumb狀態(tài)下可以做的事情一下子豐富了許多,同樣工作需要的指令周期數(shù)也明顯下降。Cortex-M3/4支持的Thumb-2指令“子集”包括下列三部分 :(1) 32位寬指令 :即與32位ARM指令功能相當(dāng);(2) 16位窄指令:即16位Thumb指令;(3) 擴(kuò)展的32位Thumb-
5、2指令。16b/32b Thumb-2指令集Cortex-M3/4/7Thumb2子集16b Thumb指令集圖4-1-2 Thumb-2指令集與Thumb指令集的關(guān)系4.1.2ARM/Thumb/Thumb-2指令特性32位ARM指令(簡(jiǎn)稱(chēng)“ARM指令”)是指在經(jīng)典ARM系列處理器(ARM7、ARM9、ARM10、ARM11)在ARM狀態(tài)下執(zhí)行的指令。Thumb-2指令集中的32位寬指令(簡(jiǎn)稱(chēng)“寬指令”)是指在Cortex M3/M4處理器在Thumb狀態(tài)下的32位寬指令Cortex M3/M4處理器沒(méi)有32位ARM狀態(tài),16/32位指令只能在Thumb狀態(tài)下執(zhí)行。ARM指令和寬指令雖然屬于
6、不同處理器,且處理器所處狀態(tài)也不同,但它們有大致相同指令格式和語(yǔ)法規(guī)則當(dāng)然也有細(xì)微差別,比如所有ARM指令,在任何地方都可加條件后綴碼, 而大多數(shù)情況下,THUMB-2指令只有在“IT指令塊”中的寬指令可帶條件后綴碼。16位Thumb指令集與32位寬指令集的區(qū)別含3大點(diǎn):(1)THUMB指令的第二操作數(shù)受到更多限制;(2)除了分支指令B有條件執(zhí)行功能外,其它THUMB指令均為無(wú)條件執(zhí)行;(3)大多數(shù)Thumb數(shù)據(jù)處理指令采用2操作數(shù)格式;更為詳細(xì)的Thumb指令集與32位寬指令的區(qū)別見(jiàn)指令介紹。4.1.3ARM匯編器基本語(yǔ)法(1)匯編語(yǔ)句格式ARM/Thumb/Thumb-2匯編語(yǔ)言的語(yǔ)句格式
7、為:匯編指令的最典型書(shū)寫(xiě)模式如下所示:標(biāo)號(hào)是可選的,如果有,它必須頂格寫(xiě)。標(biāo)號(hào)的作用是讓匯編器來(lái)計(jì)算程序轉(zhuǎn)移的地址。操作碼是指令的助記符,它的前面必須有至少一個(gè)空白符,通常使用一個(gè)“Tab”鍵來(lái)產(chǎn)生。操作碼后面往往跟隨若干個(gè)操作數(shù),而第1 個(gè)操作數(shù),通常都給出本指令執(zhí)行結(jié)果的存儲(chǔ)地。不同指令需要不同數(shù)目的操作數(shù),并且對(duì)操作數(shù)的語(yǔ)法要求也可以不同。舉例來(lái)說(shuō),立即數(shù)必須以“#”開(kāi)頭。標(biāo)號(hào)S ,;注解簡(jiǎn)單但完整的ARM匯編語(yǔ)代碼程序段還可以使用EQU 指示字來(lái)定義符號(hào)常量(僅在編譯階段有用,沒(méi)有分配存儲(chǔ)單元)NVIC_IRQ_SETEN0EQU0xE000E100NVIC_IRQ0_ENABLEEQ
8、U0x1LDR R0, =NVIC_IRQ_SETEN0;在這里的LDR 是個(gè)偽指令,;它會(huì)被匯編器轉(zhuǎn)換成 ;一條“相對(duì)PC 的加載指令”MOV R1, #NVIC_IRQ0_ENABLE; 把立即數(shù)傳送到指令中STR R1, R0; *R0=R1,執(zhí)行完此指令后;IRQ #0 被使能。VARDCD NVIC_IRQ_SETEN0注意:常數(shù)定義必須頂格寫(xiě)如果匯編器不能識(shí)別某些特殊指令的助記符,你就要“手工匯編”查出該指令的確切二進(jìn)制機(jī)器碼,然后使用DCI 編譯器指示字。例如,BKPT 指令的機(jī)器碼是0xBE00,即可以按如下格式書(shū)寫(xiě):DCI0xBE00; 斷點(diǎn)(BKPT),這是一條16 位指令
9、類(lèi)似地,你還可以使用DCB 來(lái)定義存儲(chǔ)在RAM/ROM中的一串字節(jié)常數(shù)允許以字符串的形式表達(dá),還可以使用DCD 來(lái)定義一串32 位整數(shù)。它們最常被用來(lái)在代碼中書(shū)寫(xiě)表格。例如:LDR R3, =MY_NUMBER; R3= MY_NUMBERLDR R4, R3; R4= *R3LDR R0, =HELLO_TEXT; R0= HELLO_TEXTBLPrintText; 呼叫PrintText 以顯示字符串;R0 傳遞參數(shù)MY_NUMBERDCD0x12345678HELLO_TEXTDCB”Hellon”,0請(qǐng)注意:不同匯編器的指示字和語(yǔ)法都可以不同。上述示例代碼都 是按 ARM 匯編器的語(yǔ)
10、法格式寫(xiě)的。如果使用其它匯編器,最好看一看它附帶的示例代碼。(2)匯編語(yǔ)言:統(tǒng)一的匯編語(yǔ)言為了最有力地支持Thumb-2,引用了一個(gè)“統(tǒng)一匯編語(yǔ)言(UAL)”語(yǔ)法機(jī)制:對(duì)于16 位指令和32 位指令均能實(shí)現(xiàn)的一些操作(常見(jiàn)于數(shù)據(jù)處理操作),有時(shí)雖然指令的實(shí)際操作數(shù)不同,或者對(duì)立即數(shù)的長(zhǎng)度有不同的限制,但是匯編器允許開(kāi)發(fā)者以相同的語(yǔ)法格式書(shū)寫(xiě),并且由匯編器來(lái)決定是使用16 位指令,還是使用32 位指令。Thumb 的語(yǔ)法和ARM的語(yǔ)法雖不同,但在有了UAL 之后,兩者的書(shū)寫(xiě)格式就統(tǒng)一了。ADD R0, R1 ;使用傳統(tǒng)的Thumb 語(yǔ)法 ADD R0, R0, R1 ;UAL 語(yǔ)法允許的等值寫(xiě)法
11、(R0=R0+R1)雖然引入了UAL,但是仍然允許使用傳統(tǒng)的Thumb語(yǔ)法。必須注意:如果使用傳統(tǒng)的Thumb 語(yǔ)法,有些指令會(huì)默認(rèn)地更新APSR/CPSR,即使你沒(méi)有加上S 后綴。如果使用UAL 語(yǔ)法,則必須指定S 后綴才會(huì)更新。例如:ANDR0,R1;傳統(tǒng)的Thumb語(yǔ)法ANDS R0, R0, R1 ;等值的UAL 語(yǔ)法(必須有S 后綴)在Thumb-2 指令集中,有些操作既可以由16 位指令完成,也可以由位指令完成。例如:ADDS R0, #1 ;匯編器將為了節(jié)省空間而使用16 位指令A(yù)DDS.N R0, #1 ;指定使用16 位指令(NNarrow) ADDS.W R0, #1 ;指
12、定使用32 位指令(W=Wide).W(Wide)后綴指定32 位指令。如果沒(méi)有給出后綴,匯編器會(huì)先試著32用16 位指令以縮小代碼體積,如果不行再使用32 位指令。因此,使用“.N”其實(shí)是多此一舉,不過(guò)匯編器可能仍然允許這樣 的語(yǔ)法。統(tǒng)一的匯編語(yǔ)言(UAL)實(shí)例“等價(jià)”UAL語(yǔ)法絕大多數(shù)16位指令只能訪問(wèn)R0R7;32位Thumb2 指令則無(wú)任何限制。再次重申,這是ARM公司匯編器的語(yǔ)法,其它匯編器的可能略有區(qū)別,但如果沒(méi)有給出后綴,匯編器就總是會(huì)盡量選擇更短的指令。其實(shí)在絕大多數(shù)情況下,程序是用C 寫(xiě)的,C 編譯器也會(huì)盡可能地使用短指令。當(dāng)立即數(shù)超出一定范圍時(shí),或者32 位指令能更好地適合某個(gè)操作,將使用32 位指令。32位Thumb2指令也可以按半字對(duì)齊。(以前ARM32位指令都必須按字對(duì)齊),因此下例是允許的。例:0x1000:LDR
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 煤礦安全生產(chǎn)標(biāo)準(zhǔn)化提升方案總結(jié)
- 車(chē)隊(duì)司機(jī)安全培訓(xùn)記錄課件
- 車(chē)間行車(chē)安全培訓(xùn)課件
- 車(chē)間級(jí)安全教育內(nèi)容課件
- 銀行員工獎(jiǎng)懲管理制度
- 車(chē)間生產(chǎn)安全員培訓(xùn)內(nèi)容課件
- 車(chē)間工人安全帶培訓(xùn)材料課件
- 車(chē)間安全操作規(guī)范培訓(xùn)課件
- 車(chē)間安全培訓(xùn)需求調(diào)查表課件
- 車(chē)間安全培訓(xùn)總結(jié)課件
- 2026年包頭輕工職業(yè)技術(shù)學(xué)院高職單招職業(yè)適應(yīng)性測(cè)試參考題庫(kù)及答案詳解
- 2026貴州黔南州長(zhǎng)順縣醫(yī)療集團(tuán)中心醫(yī)院招聘?jìng)浒妇幹迫藛T21人筆試參考題庫(kù)及答案解析
- 中國(guó)兒童原發(fā)性免疫性血小板減少癥診斷與治療改編指南(2025版)
- 2026年遼寧生態(tài)工程職業(yè)學(xué)院?jiǎn)握芯C合素質(zhì)考試題庫(kù)附答案詳解
- 基坑回填質(zhì)量控制措施
- 2025重慶城口縣國(guó)有企業(yè)公開(kāi)招聘26人參考題庫(kù)附答案
- 應(yīng)力性骨折課件
- 醫(yī)保基金監(jiān)管培訓(xùn)課件
- 新型醫(yī)療器械應(yīng)用評(píng)估報(bào)告
- 大數(shù)據(jù)分析在供熱中的應(yīng)用方案
- 污泥安全管理制度范本
評(píng)論
0/150
提交評(píng)論