cortex-m34基礎(chǔ)4指令系統(tǒng)--實(shí)時(shí)嵌入式-硬件基礎(chǔ)課件_第1頁
cortex-m34基礎(chǔ)4指令系統(tǒng)--實(shí)時(shí)嵌入式-硬件基礎(chǔ)課件_第2頁
cortex-m34基礎(chǔ)4指令系統(tǒng)--實(shí)時(shí)嵌入式-硬件基礎(chǔ)課件_第3頁
cortex-m34基礎(chǔ)4指令系統(tǒng)--實(shí)時(shí)嵌入式-硬件基礎(chǔ)課件_第4頁
cortex-m34基礎(chǔ)4指令系統(tǒng)--實(shí)時(shí)嵌入式-硬件基礎(chǔ)課件_第5頁
已閱讀5頁,還剩84頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、11、ARM v7概述 2.Cortex-M3基礎(chǔ) 2.1結(jié)構(gòu)框圖 2.2操作模式、特權(quán)等級 2.3存器組 2.4流水線 2.5總線 2.6存儲系統(tǒng) 2.7中斷和異常 2.8SYSTICK定時(shí)器主要內(nèi)容 2.9低功耗 2.10復(fù)位 2.11MPU 2.12調(diào)試架構(gòu) 2.13調(diào)試部件 3.Cortex-M3指令集 3.1指令集綜述 3.2尋址方式 3.3指令集介紹 4.K60硬件基礎(chǔ)21、ARM v7概述 2.Cortex-M3基礎(chǔ) 2.1結(jié)構(gòu)框圖 2.2操作模式、特權(quán)等級 2.3存器組 2.4流水線 2.5總線 2.6存儲系統(tǒng) 2.7中斷和異常 2.8SYSTICK定時(shí)器主要內(nèi)容 2.9低功耗

2、 2.10復(fù)位 2.11MPU 2.12調(diào)試架構(gòu) 2.13調(diào)試部件 3.Cortex-M3指令集 3.1指令集綜述 3.2尋址方式 3.3指令集介紹 4.K60硬件基礎(chǔ)31、ARM v7概述 2.Cortex-M3基礎(chǔ) 2.1結(jié)構(gòu)框圖 2.2操作模式、特權(quán)等級 2.3存器組 2.4流水線 2.5總線 2.6存儲系統(tǒng) 2.7中斷和異常 2.8SYSTICK定時(shí)器主要內(nèi)容 2.9低功耗 2.10復(fù)位 2.11MPU 2.12調(diào)試架構(gòu) 2.13調(diào)試部件 3.Cortex-M3指令集 3.1指令集綜述 3.2尋址方式 3.3指令集介紹 4.K60硬件基礎(chǔ)1.CM3程序的文件類型:C程序:CM3開發(fā)中大

3、部分程序使用C語言編寫,文件類型為“*.C”;匯編程序:涉及到硬件底層操作的代碼有時(shí)必須使用匯編語言編寫,文件類型為“*.S”。2.為什么學(xué)習(xí)CM3指令系統(tǒng):操作系統(tǒng)移植編寫啟動(dòng)代碼方便程序調(diào)試5概述1. 處理器的尋址方式;2. 指令的特點(diǎn);3. 指令的種類,它能完成哪些功能。學(xué)習(xí)重點(diǎn)71、ARM v7概述 2.Cortex-M3基礎(chǔ) 2.1結(jié)構(gòu)框圖 2.2操作模式、特權(quán)等級 2.3存器組 2.4流水線 2.5總線 2.6存儲系統(tǒng) 2.7中斷和異常 2.8SYSTICK定時(shí)器主要內(nèi)容 2.9低功耗 2.10復(fù)位 2.11MPU 2.12調(diào)試架構(gòu) 2.13調(diào)試部件 3.Cortex-M3指令集

4、3.1指令集綜述 3.2尋址方式 3.3指令集介紹 4.K60硬件基礎(chǔ)3.2 ARM處理器尋址方式尋址方式分類 尋址方式是根據(jù)指令中給出的地址碼字段來實(shí)現(xiàn)尋找真實(shí)操作數(shù)地址的方式。ARM處理器具有8種基本尋址方式。1.寄存器尋址; 2.立即尋址;3.寄存器移位尋址;4.寄存器間接尋址;5.基址尋址;6.多寄存器尋址;7.堆棧尋址;8.相對尋址。 操作數(shù)的值在寄存器中,指令中的地址碼字段指出的是寄存器編號,指令執(zhí)行時(shí)直接取出寄存器值來操作。寄存器尋址指令舉例如下: MOV R1,R2 ;將R2的值存入R1 SUB R0,R1,R2 ;將R1的值減去R2的值,結(jié)果保存到R0 0 xAA0 x55R

5、2R1尋址方式分類寄存器尋址MOV R1,R20 xAA3.2 ARM處理器尋址方式 立即尋址指令中的操作碼字段后面的地址碼部分即是操作數(shù)本身,也就是說,數(shù)據(jù)就包含在指令當(dāng)中,取出指令也就取出了可以立即使用的操作數(shù)(這樣的數(shù)稱為立即數(shù))。立即尋址指令舉例如下: SUBSR0,R0,#1 ;R0減1,結(jié)果放入R0,并且影響標(biāo)志位MOVR0,#0 xFF000 ;將立即數(shù)0 xFF000裝入R0寄存器 0 x55R0MOV R0,#0 xFF00程序存儲尋址方式分類立即尋址MOV R0,#0 xFF000 xFF00從代碼中獲得數(shù)據(jù)3.2 ARM處理器尋址方式 寄存器移位尋址是ARM指令集特有的尋

6、址方式。當(dāng)?shù)?個(gè)操作數(shù)是寄存器移位方式時(shí),第2個(gè)寄存器操作數(shù)在與第1個(gè)操作數(shù)結(jié)合之前,選擇進(jìn)行移位操作。寄存器移位尋址指令舉例如下:MOVR0,R2,LSL #3 ;R2的值左移3位,結(jié)果放入R0, ;即是R0=R28 ANDSR1,R1,R2,LSL R3 ;R2的值左移R3位,然后和R1相 ;“與”操作,結(jié)果放入R10 x55R0R20 x01尋址方式分類寄存器移位尋址MOV R0,R2,LSL #30 x080 x08邏輯左移3位3.2 ARM處理器尋址方式 寄存器間接尋址指令中的地址碼給出的是一個(gè)通用寄存器的編號,所需的操作數(shù)保存在寄存器指定地址的存儲單元中,即寄存器為操作數(shù)的地址指針

7、。寄存器間接尋址指令舉例如下: LDRR1,R2;將R2指向的存儲單元的數(shù)據(jù)讀出;保存在R1中 SWPR1,R1,R2;將寄存器R1的值和R2指定的存儲;單元的內(nèi)容交換 0 x55R0R20 x400000000 xAA0 x40000000尋址方式分類寄存器間接尋址LDR R0,R20 xAA3.2 ARM處理器尋址方式 基址尋址就是將基址寄存器的內(nèi)容與指令中給出的偏移量相加,形成操作數(shù)的有效地址。基址尋址用于訪問基址附近的存儲單元,常用于查表、數(shù)組操作、功能部件寄存器訪問等。基址尋址指令舉例如下: LDRR2,R3,#0 x0C ;讀取R3+0 x0C地址上的存儲單元 ;的內(nèi)容,放入R2

8、STRR1,R0,#-4! ;先R0=R0-4,然后把R1的值寄存 ;到保存到R0指定的存儲單元 尋址方式分類基址尋址0 x55R2R30 x400000000 xAA0 x4000000CLDR R2,R3,#0 x0C0 xAA將R3+0 x0C作為地址裝載數(shù)據(jù)3.2 ARM處理器尋址方式 多寄存器尋址一次可傳送幾個(gè)寄存器值,允許一條指令傳送16個(gè)寄存器的任何子集或所有寄存器。多寄存器尋址指令舉例如下: LDMIAR1!,R2-R7,R12 ;將R1指向的單元中的數(shù)據(jù)讀出到 ;R2R7、R12中(R1自動(dòng)加1) STMIAR0!,R2-R7,R12 ;將寄存器R2R7、R12的值保 ;存到

9、R0指向的存儲; 單元中 ;(R0自動(dòng)加1)0 x40000000R1R20 x?0 x010 x400000000 x?R3R40 x?R60 x?0 x020 x030 x040 x400000040 x400000080 x4000000C存儲器尋址方式分類多寄存器尋址LDMIA R1!,R2-R4,R6 0 x010 x020 x030 x040 x400000103.2 ARM處理器尋址方式 堆棧是一個(gè)按特定順序進(jìn)行存取的存儲區(qū),操作順序?yàn)椤昂筮M(jìn)先出” 。堆棧尋址是隱含的,它使用一個(gè)專門的寄存器(堆棧指針)指向一塊存儲區(qū)域(堆棧),指針?biāo)赶虻拇鎯卧词嵌褩5臈m?。存儲器堆??煞譃?/p>

10、兩種: 向上生長:向高地址方向生長,稱為遞增堆棧向下生長:向低地址方向生長,稱為遞減堆棧尋址方式分類堆棧尋址3.2 ARM處理器尋址方式尋址方式分類堆棧尋址棧底棧頂棧區(qū)SP堆棧存儲區(qū)棧頂棧底棧區(qū)SP向下增長向上增長0 x123456780 x12345678堆棧壓棧堆棧壓棧3.2 ARM處理器尋址方式棧頂SP棧頂SP棧底空堆棧棧底滿堆棧堆棧指針指向最后壓入的堆棧的有效數(shù)據(jù)項(xiàng),稱為滿堆棧;堆棧指針指向下一個(gè)待壓入數(shù)據(jù)的空位置,稱為空堆棧。 尋址方式分類堆棧尋址0 x123456780 x12345678棧頂SP0 x12345678棧頂SP壓棧壓棧3.2 ARM處理器尋址方式所以可以組合出四種類

11、型的堆棧方式:滿遞增:堆棧向上增長,堆棧指針指向內(nèi)含有效數(shù)據(jù)項(xiàng)的最高地址。指令如LDMFA、STMFA等; 空遞增:堆棧向上增長,堆棧指針指向堆棧上的第一個(gè)空位置。指令如LDMEA、STMEA等; 滿遞減:堆棧向下增長,堆棧指針指向內(nèi)含有效數(shù)據(jù)項(xiàng)的最低地址。指令如LDMFD、STMFD等;空遞減:堆棧向下增長,堆棧指針向堆棧下的第一個(gè)空位置。指令如LDMED、STMED等。 尋址方式分類堆棧尋址3.2 ARM處理器尋址方式 相對尋址是基址尋址的一種變通。由程序計(jì)數(shù)器PC提供基準(zhǔn)地址,指令中的地址碼字段作為偏移量,兩者相加后得到的地址即為操作數(shù)的有效地址。相對尋址指令舉例如下:BLSUBR1;調(diào)

12、用到SUBR1子程序BEQLOOP;條件跳轉(zhuǎn)到LOOP標(biāo)號處.LOOPMOVR6,#1.SUBR1. 尋址方式分類相對尋址3.2 ARM處理器尋址方式201、ARM v7概述 2.Cortex-M3基礎(chǔ) 2.1結(jié)構(gòu)框圖 2.2操作模式、特權(quán)等級 2.3存器組 2.4流水線 2.5總線 2.6存儲系統(tǒng) 2.7中斷和異常 2.8SYSTICK定時(shí)器主要內(nèi)容 2.9低功耗 2.10復(fù)位 2.11MPU 2.12調(diào)試架構(gòu) 2.13調(diào)試部件 3.Cortex-M3指令集 3.1指令集綜述 3.2尋址方式 3.3指令集介紹 4.K60硬件基礎(chǔ)3.3指令集介紹 3.3.1匯編基礎(chǔ) 3.3.2指令集 3.3.

13、3CM3中的前衛(wèi)指令簡單的程序;文件名:TEST1.S ;功能:實(shí)現(xiàn)兩個(gè)寄存器相加 ;說明:使用ARMulate軟件仿真調(diào)試 AREAExample1,CODE,READONLY ;聲明代碼段Example1 ENTRY ;標(biāo)識程序入口 CODE32 ;聲明32位ARM指令START MOVR0,#0 ;設(shè)置參數(shù) MOVR1,#10LOOPBLADD_SUB ;調(diào)用子程序ADD_SUB BLOOP ;跳轉(zhuǎn)到LOOPADD_SUB ADDSR0,R0,R1 ;R0 = R0 + R1 MOVPC,LR ;子程序返回 END ;文件結(jié)束 使用“;”進(jìn)行注釋標(biāo)號頂格寫實(shí)際代碼段聲明文件結(jié)束3.3指令

14、集介紹 3.3.1匯編基礎(chǔ) 3.3.2指令集 3.3.3CM3中的前衛(wèi)指令243.3.1匯編基礎(chǔ)1、基本語法標(biāo)號 操作碼 操作數(shù)1,操作數(shù)2, ;注釋注釋:1)標(biāo)號可選,如果有,必須頂格寫。標(biāo)號的作用是讓匯編器來計(jì)算程序轉(zhuǎn)移地址。2)操作碼是指令的助記符,前面必須至少有一個(gè)空白符。3)第1操作數(shù),通常給出本指令的執(zhí)行結(jié)果的存儲位置。4)第2操作數(shù)以后的操作數(shù),通常是參與運(yùn)算的數(shù)據(jù)或其位置。5);后的為注釋,不影響匯編器的工作。252、匯編語言中的后綴1)條件執(zhí)行后綴通常用于跳轉(zhuǎn)指令;2)如果其他指令在IF-THEN指令塊中,也可以使用條件執(zhí)行后;3)條件后綴和S后綴可同時(shí)使用。263、統(tǒng)一匯編

15、語言ULA 1)為了支持Thumb-2,并且最大程度的發(fā)揮其功能,ARM匯編器引入了一個(gè)“統(tǒng)一匯編語言”ULA,同時(shí)支持16位和32位指令。 2)在ULA語法中,指令使用后綴s才可以影響APSR。 3)在 UAL 下,匯編器能主動(dòng)決定用16位指令或32位指令,也可以手工指定;3.3指令集介紹 3.3.1匯編基礎(chǔ) 3.3.2指令集 3.3.3CM3中的前衛(wèi)指令存儲器訪問指令算術(shù)運(yùn)算指令邏輯運(yùn)算指令移位、循環(huán)指令展開指令數(shù)據(jù)反轉(zhuǎn)指令位域處理和操作指令條件跳轉(zhuǎn)指令屏障和存儲器屏障指令飽和運(yùn)算指令28存儲器訪問指令后綴裝載指令:LDRx 目標(biāo)寄存器, 源地址保存指令:STRx 源寄存器, 目標(biāo)地址B:

16、從/向指定位置加載/存儲字節(jié)H:從/向指定位置加載/存儲半字無:從/向指定位置加載/存儲字EX:排他性加載/存儲D:從/向指定位置加載/存儲雙字存儲器訪問指令地址形式裝載指令:LDRx 目標(biāo)寄存器, 源地址保存指令:STRx 源寄存器, 目標(biāo)地址立即數(shù):立即數(shù)可以是一個(gè)無符號的數(shù)值。這個(gè)數(shù)據(jù)可以加到基址寄存器,也可以從基址寄存器中減去這個(gè)數(shù)值。 如:LDR R1,R0,#0 x12 寄存器:寄存器中的數(shù)值可以加到基址寄存器,也可以從基址寄存器中減去這個(gè)數(shù)值。 如:LDR R1,R0,R2 寄存器及移位常數(shù):寄存器移位后的值可以加到基址寄存器,也可以從基址寄存器中減去這個(gè)數(shù)值。 如:LDR R1

17、,R0,R2,LSL #2存儲器訪問指令尋址方式裝載指令:LDR x 目標(biāo)寄存器, 源地址保存指令:STRx 源寄存器, 目標(biāo)地址零偏移: 如:LDR Rd,Rn前索引偏移:如:LDR Rd,Rn,#0 x04!程序相對偏移:如:LDR Rd,labe1 后索引偏移:如:LDR Rd,Rn,#0 x04存儲器訪問指令單寄存器加載/存儲 0 x55R2R50 x400000000 x123456780 x40000000存儲器地址應(yīng)用示例:LDRR2,R5 ;將R5指向地址的字?jǐn)?shù)據(jù)存入R20 x12345678ARM存儲器訪問指令單寄存器加載應(yīng)用0 x12345678R1R20 x4000000

18、00 x?0 x40000004存儲器地址應(yīng)用示例:STRR1,R2,#0 x04 ;將R1的數(shù)據(jù)存儲到R0+0 x04地址0 x12345678+4ARM存儲器訪問指令單寄存器保存應(yīng)用35存儲器訪問指令多寄存器存取裝載指令:LDM 源地址,目標(biāo)寄存器列表存儲指令:STM 目標(biāo)地址,源寄存器列表存儲器源地址目標(biāo)寄存器1目標(biāo)寄存器n存儲器目標(biāo)地址源寄存器1源寄存器n存儲器訪問指令多寄存器存取裝載指令:LDM存儲指令:STMxxLDM/STM指令搭配不同的后綴實(shí)現(xiàn)不同方式地址增長方式:IA: 每次傳送后地址加4DB:每次傳送前地址減4存儲器訪問指令多寄存器加載/存儲 ARM存儲器訪問指令多寄存器存

19、取數(shù)據(jù)塊傳送指令操作過程如右圖所示,其中R1為指令執(zhí)行前的基址寄存器,R1則為指令執(zhí)行后的基址寄存器。R5R6R7R1 R1 指令STMIA R1!,R5-R74008H4004H4000H4014H4010H400CHR5R6R7R1 R1 指令STMDB R1!,R5-R74008H4004H4000H4014H4010H400CH0 x40000000R1R20 x?0 x010 x400000000 x?R3R40 x?R60 x?0 x020 x030 x040 x400000040 x400000080 x4000000C存儲器0 x010 x020 x030 x040 x4000

20、0010應(yīng)用示例:LDMIA R1!,R2-R4,R6 將R1指向的內(nèi)存數(shù)據(jù)讀取到R0-R4和R6寄存器中存儲器訪問指令多寄存器存取41另外兩種存儲器操作為棧的PUSH和POP.PUSH R0,R4-R7,R9POP R2,R342存儲器訪問指令算術(shù)運(yùn)算指令邏輯運(yùn)算指令移位、循環(huán)指令展開指令數(shù)據(jù)反轉(zhuǎn)指令位域處理和操作指令條件跳轉(zhuǎn)指令屏障和存儲器屏障指令飽和運(yùn)算指令常見的算術(shù)四則運(yùn)算指令 44存儲器訪問指令算術(shù)運(yùn)算指令邏輯運(yùn)算指令移位、循環(huán)指令展開指令數(shù)據(jù)反轉(zhuǎn)指令位域處理和操作指令條件跳轉(zhuǎn)指令屏障和存儲器屏障指令飽和運(yùn)算指令46存儲器訪問指令算術(shù)運(yùn)算指令邏輯運(yùn)算指令移位、循環(huán)指令展開指令數(shù)據(jù)反轉(zhuǎn)

21、指令位域處理和操作指令條件跳轉(zhuǎn)指令屏障和存儲器屏障指令飽和運(yùn)算指令47移位操作指令 49存儲器訪問指令算術(shù)運(yùn)算指令邏輯運(yùn)算指令移位、循環(huán)指令展開指令數(shù)據(jù)反轉(zhuǎn)指令位域處理和操作指令條件跳轉(zhuǎn)指令屏障和存儲器屏障指令飽和運(yùn)算指令50帶符號展開指令 SXTB Rd,Rm ;Rd=signext(Rm7:0)SXTH Rd,Rm ;Rd=signext(Rm15:0)51存儲器訪問指令算術(shù)運(yùn)算指令邏輯運(yùn)算指令移位、循環(huán)指令展開指令數(shù)據(jù)反轉(zhuǎn)指令位域處理和操作指令條件跳轉(zhuǎn)指令屏障和存儲器屏障指令飽和運(yùn)算指令52數(shù)據(jù)反轉(zhuǎn)指令53存儲器訪問指令算術(shù)運(yùn)算指令邏輯運(yùn)算指令移位、循環(huán)指令展開指令數(shù)據(jù)反轉(zhuǎn)指令位域處理和

22、操作指令條件跳轉(zhuǎn)指令屏障和存儲器屏障指令飽和運(yùn)算指令54位域處理指令555657存儲器訪問指令算術(shù)運(yùn)算指令邏輯運(yùn)算指令移位、循環(huán)指令展開指令數(shù)據(jù)反轉(zhuǎn)指令位域處理和操作指令條件跳轉(zhuǎn)指令屏障和存儲器屏障指令飽和運(yùn)算指令58跳轉(zhuǎn)依據(jù)在CM3中,下列指令可以更新PSR 中的標(biāo)志: 16位算術(shù)邏輯指令 32位帶S后綴的算術(shù)邏輯指令 比較指令(如,CMP/CMN)和測試指令(如 TST/TEQ) 直接寫 PSR/APSR (MSR 指令)操作碼條件助記符標(biāo)志含義0000EQZ=1相等0001NEZ=0不相等0010CS/HSC=1無符號數(shù)大于或等于0011CC/LOC=0無符號數(shù)小于0100MIN=1負(fù)數(shù)

23、0101PLN=0正數(shù)或零0110VSV=1溢出0111VCV=0沒有溢出1000HIC=1,Z=0無符號數(shù)大于1001LSC=0,Z=1無符號數(shù)小于或等于1010GEN=V有符號數(shù)大于或等于 1011LTN!=V有符號數(shù)小于 1100GTZ=0,N=V有符號數(shù)大于 1101LEZ=1,N!=V有符號數(shù)小于或等于 1110AL任何無條件執(zhí)行 (指令默認(rèn)條件) 1111NV任何從不執(zhí)行(不要使用) 指令條件碼表60 BEQ label ;當(dāng) Z=1時(shí)轉(zhuǎn)移 CMP R0, R1 ;比較R0,R1 IT TET GT ;If R0R1 Then(T代表Then,E代表Else) MOVGT R2,

24、R0 MOVLE R2, R0 MOVGT R3, R1 MOVGT R3, R1 61存儲器訪問指令算術(shù)運(yùn)算指令邏輯運(yùn)算指令移位、循環(huán)指令展開指令數(shù)據(jù)反轉(zhuǎn)指令位域處理和操作指令條件跳轉(zhuǎn)指令屏障和存儲器屏障指令飽和運(yùn)算指令62 隔離指令在一些結(jié)構(gòu)比較復(fù)雜的存儲器系統(tǒng)中是必要的。在這類系統(tǒng)中,如果沒有必要的隔離,會(huì)導(dǎo)致系統(tǒng)發(fā)生紊亂危象(race condition),(相當(dāng)于數(shù)電中的“競爭與冒險(xiǎn)”)。 如果RAM的訪問是帶緩沖的,并且寫完之后馬上讀,就必須讓它“喘口氣”用DMB指令來隔離,以保證緩沖中的數(shù)據(jù)已經(jīng)落實(shí)到RAM中。 DSB比DMB更保險(xiǎn)(當(dāng)然也是有執(zhí)行代價(jià)的),它是寧可錯(cuò)殺也不漏網(wǎng)清

25、空了寫緩沖,使得任何它后面的指令,不管要不要使用先前的存儲器訪問結(jié)果,通通等待訪問完成。 如果某個(gè)程序從下一條要執(zhí)行的指令處更新了自己,但是先前的舊指令已經(jīng)被預(yù)取到流水線中去了,此時(shí)就必須清洗流水線,把舊版本的指令洗出去,再預(yù)取新版本的指令。因此,必須在被更新代碼段的前面使用ISB,以保證舊的代碼從流水線中被清洗出去,不再有機(jī)會(huì)執(zhí)行。63存儲器訪問指令算術(shù)運(yùn)算指令邏輯運(yùn)算指令移位、循環(huán)指令展開指令數(shù)據(jù)反轉(zhuǎn)指令位域處理和操作指令條件跳轉(zhuǎn)指令屏障和存儲器屏障指令飽和運(yùn)算指令64 CM3中的飽和運(yùn)算指令分為兩種: 1)“沒有直流分量”的交流信號飽和帶符號飽和運(yùn)算; 2)無符號飽和運(yùn)算則類似于“削頂失

26、真單向?qū)ā薄?65指令名 功能描述 SSAT.W Rd, #imm5, Rn, ,shift 以帶符號數(shù)的邊界進(jìn)行飽和運(yùn)算(交流) USAT.W Rd, #imm5, Rn, ,shift 以無符號數(shù)的邊界進(jìn)行飽和運(yùn)算(帶紋波的直流)3.3指令集介紹 3.3.1匯編基礎(chǔ) 3.3.2指令集 3.3.3CM3中的前衛(wèi)指令MSR/MRSIF-THENSDIV/UDIVREV/REVH/REVSHSXTB/SXTH/UXTB/UXTHUBFX/SBFXLDRD/STRD表格跳轉(zhuǎn)字節(jié)/表格跳轉(zhuǎn)半字6768MRS、MSR 專用特殊寄存器訪問指令,只能在特權(quán)級狀態(tài)下使用,APSR除外,APSR可以在用戶級

27、狀態(tài)下使用。MRS , ;加載特殊功能寄存器的值到Rn MSR , ;存儲Rn的值到特殊功能寄存器 指定PSP進(jìn)行更新的例子: LDR R0, =0 x20008000 MSR PSP, R0 BX LR ;如果是從異常(Handler模式)返回到用戶線程模式,則使用新的PSP的值作為棧頂指針實(shí)質(zhì)上是替換了之前線程狀態(tài)使用的PSP指針(所指向的內(nèi)存地址空間)69MSR/MRSIF-THENSDIV/UDIVREV/REVH/REVSHSXTB/SXTH/UXTB/UXTHUBFX/SBFXLDRD/STRD表格跳轉(zhuǎn)字節(jié)/表格跳轉(zhuǎn)半字7071 IF-THEN(IT)指令圍起一個(gè)快,里面最多有4條指令,可以條件執(zhí)行。 IT指令已經(jīng)帶了一個(gè)“T”,因此還可以最多再帶3個(gè)“T”或者“E”,并且對T和E的順序沒有要求,其中T對應(yīng)條件成立時(shí)執(zhí)行的語句,E對應(yīng)條件不成立時(shí)執(zhí)行的語句。72MSR/MRSIF-THENSDIV/UDIVREV/REVH/REVSHSXTB/SXTH/UXTB/UXTHUBFX/SBFXLDRD/STRD表格跳轉(zhuǎn)字節(jié)/表格跳轉(zhuǎn)半字737432位硬件除法指令MSR/MRSIF-THENS

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論