![cortex-m34基礎(chǔ)4指令系統(tǒng)--實(shí)時(shí)嵌入式-硬件基礎(chǔ)課件_第1頁(yè)](http://file4.renrendoc.com/view/590d7940119a61735c8db7f1eac5b34b/590d7940119a61735c8db7f1eac5b34b1.gif)
![cortex-m34基礎(chǔ)4指令系統(tǒng)--實(shí)時(shí)嵌入式-硬件基礎(chǔ)課件_第2頁(yè)](http://file4.renrendoc.com/view/590d7940119a61735c8db7f1eac5b34b/590d7940119a61735c8db7f1eac5b34b2.gif)
![cortex-m34基礎(chǔ)4指令系統(tǒng)--實(shí)時(shí)嵌入式-硬件基礎(chǔ)課件_第3頁(yè)](http://file4.renrendoc.com/view/590d7940119a61735c8db7f1eac5b34b/590d7940119a61735c8db7f1eac5b34b3.gif)
![cortex-m34基礎(chǔ)4指令系統(tǒng)--實(shí)時(shí)嵌入式-硬件基礎(chǔ)課件_第4頁(yè)](http://file4.renrendoc.com/view/590d7940119a61735c8db7f1eac5b34b/590d7940119a61735c8db7f1eac5b34b4.gif)
![cortex-m34基礎(chǔ)4指令系統(tǒng)--實(shí)時(shí)嵌入式-硬件基礎(chǔ)課件_第5頁(yè)](http://file4.renrendoc.com/view/590d7940119a61735c8db7f1eac5b34b/590d7940119a61735c8db7f1eac5b34b5.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、11、ARM v7概述 2.Cortex-M3基礎(chǔ) 2.1結(jié)構(gòu)框圖 2.2操作模式、特權(quán)等級(jí) 2.3存器組 2.4流水線 2.5總線 2.6存儲(chǔ)系統(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)等級(jí) 2.3存器組 2.4流水線 2.5總線 2.6存儲(chǔ)系統(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)等級(jí) 2.3存器組 2.4流水線 2.5總線 2.6存儲(chǔ)系統(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語(yǔ)言編寫,文件類型為“*.C”;匯編程序:涉及到硬件底層操作的代碼有時(shí)必須使用匯編語(yǔ)言編寫,文件類型為“*.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)等級(jí) 2.3存器組 2.4流水線 2.5總線 2.6存儲(chǔ)系統(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ù)指令中給出的地址碼字段來(lái)實(shí)現(xiàn)尋找真實(shí)操作數(shù)地址的方式。ARM處理器具有8種基本尋址方式。1.寄存器尋址; 2.立即尋址;3.寄存器移位尋址;4.寄存器間接尋址;5.基址尋址;6.多寄存器尋址;7.堆棧尋址;8.相對(duì)尋址。 操作數(shù)的值在寄存器中,指令中的地址碼字段指出的是寄存器編號(hào),指令執(zhí)行時(shí)直接取出寄存器值來(lái)操作。寄存器尋址指令舉例如下: 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程序存儲(chǔ)尋址方式分類立即尋址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è)通用寄存器的編號(hào),所需的操作數(shù)保存在寄存器指定地址的存儲(chǔ)單元中,即寄存器為操作數(shù)的地址指針
7、。寄存器間接尋址指令舉例如下: LDRR1,R2;將R2指向的存儲(chǔ)單元的數(shù)據(jù)讀出;保存在R1中 SWPR1,R1,R2;將寄存器R1的值和R2指定的存儲(chǔ);單元的內(nèi)容交換 0 x55R0R20 x400000000 xAA0 x40000000尋址方式分類寄存器間接尋址LDR R0,R20 xAA3.2 ARM處理器尋址方式 基址尋址就是將基址寄存器的內(nèi)容與指令中給出的偏移量相加,形成操作數(shù)的有效地址?;穼ぶ酚糜谠L問基址附近的存儲(chǔ)單元,常用于查表、數(shù)組操作、功能部件寄存器訪問等。基址尋址指令舉例如下: LDRR2,R3,#0 x0C ;讀取R3+0 x0C地址上的存儲(chǔ)單元 ;的內(nèi)容,放入R2
8、STRR1,R0,#-4! ;先R0=R0-4,然后把R1的值寄存 ;到保存到R0指定的存儲(chǔ)單元 尋址方式分類基址尋址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指向的存儲(chǔ); 單元中 ;(R0自動(dòng)加1)0 x40000000R1R20 x?0 x010 x400000000 x?R3R40 x?R60 x?0 x020 x030 x040 x400000040 x400000080 x4000000C存儲(chǔ)器尋址方式分類多寄存器尋址LDMIA R1!,R2-R4,R6 0 x010 x020 x030 x040 x400000103.2 ARM處理器尋址方式 堆棧是一個(gè)按特定順序進(jìn)行存取的存儲(chǔ)區(qū),操作順序?yàn)椤昂筮M(jìn)先出” 。堆棧尋址是隱含的,它使用一個(gè)專門的寄存器(堆棧指針)指向一塊存儲(chǔ)區(qū)域(堆棧),指針?biāo)赶虻拇鎯?chǔ)單元即是堆棧的棧頂。存儲(chǔ)器堆??煞譃?/p>
10、兩種: 向上生長(zhǎng):向高地址方向生長(zhǎng),稱為遞增堆棧向下生長(zhǎng):向低地址方向生長(zhǎng),稱為遞減堆棧尋址方式分類堆棧尋址3.2 ARM處理器尋址方式尋址方式分類堆棧尋址棧底棧頂棧區(qū)SP堆棧存儲(chǔ)區(qū)棧頂棧底棧區(qū)SP向下增長(zhǎng)向上增長(zhǎng)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、型的堆棧方式:滿遞增:堆棧向上增長(zhǎng),堆棧指針指向內(nèi)含有效數(shù)據(jù)項(xiàng)的最高地址。指令如LDMFA、STMFA等; 空遞增:堆棧向上增長(zhǎng),堆棧指針指向堆棧上的第一個(gè)空位置。指令如LDMEA、STMEA等; 滿遞減:堆棧向下增長(zhǎng),堆棧指針指向內(nèi)含有效數(shù)據(jù)項(xiàng)的最低地址。指令如LDMFD、STMFD等;空遞減:堆棧向下增長(zhǎng),堆棧指針向堆棧下的第一個(gè)空位置。指令如LDMED、STMED等。 尋址方式分類堆棧尋址3.2 ARM處理器尋址方式 相對(duì)尋址是基址尋址的一種變通。由程序計(jì)數(shù)器PC提供基準(zhǔn)地址,指令中的地址碼字段作為偏移量,兩者相加后得到的地址即為操作數(shù)的有效地址。相對(duì)尋址指令舉例如下:BLSUBR1;調(diào)
12、用到SUBR1子程序BEQLOOP;條件跳轉(zhuǎn)到LOOP標(biāo)號(hào)處.LOOPMOVR6,#1.SUBR1. 尋址方式分類相對(duì)尋址3.2 ARM處理器尋址方式201、ARM v7概述 2.Cortex-M3基礎(chǔ) 2.1結(jié)構(gòu)框圖 2.2操作模式、特權(quán)等級(jí) 2.3存器組 2.4流水線 2.5總線 2.6存儲(chǔ)系統(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)指令簡(jiǎn)單的程序;文件名:TEST1.S ;功能:實(shí)現(xiàn)兩個(gè)寄存器相加 ;說明:使用ARMulate軟件仿真調(diào)試 AREAExample1,CODE,READONLY ;聲明代碼段Example1 ENTRY ;標(biāo)識(shí)程序入口 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)號(hào)頂格寫實(shí)際代碼段聲明文件結(jié)束3.3指令
14、集介紹 3.3.1匯編基礎(chǔ) 3.3.2指令集 3.3.3CM3中的前衛(wèi)指令243.3.1匯編基礎(chǔ)1、基本語(yǔ)法標(biāo)號(hào) 操作碼 操作數(shù)1,操作數(shù)2, ;注釋注釋:1)標(biāo)號(hào)可選,如果有,必須頂格寫。標(biāo)號(hào)的作用是讓匯編器來(lái)計(jì)算程序轉(zhuǎn)移地址。2)操作碼是指令的助記符,前面必須至少有一個(gè)空白符。3)第1操作數(shù),通常給出本指令的執(zhí)行結(jié)果的存儲(chǔ)位置。4)第2操作數(shù)以后的操作數(shù),通常是參與運(yùn)算的數(shù)據(jù)或其位置。5);后的為注釋,不影響匯編器的工作。252、匯編語(yǔ)言中的后綴1)條件執(zhí)行后綴通常用于跳轉(zhuǎn)指令;2)如果其他指令在IF-THEN指令塊中,也可以使用條件執(zhí)行后;3)條件后綴和S后綴可同時(shí)使用。263、統(tǒng)一匯編
15、語(yǔ)言ULA 1)為了支持Thumb-2,并且最大程度的發(fā)揮其功能,ARM匯編器引入了一個(gè)“統(tǒng)一匯編語(yǔ)言”ULA,同時(shí)支持16位和32位指令。 2)在ULA語(yǔ)法中,指令使用后綴s才可以影響APSR。 3)在 UAL 下,匯編器能主動(dòng)決定用16位指令或32位指令,也可以手工指定;3.3指令集介紹 3.3.1匯編基礎(chǔ) 3.3.2指令集 3.3.3CM3中的前衛(wèi)指令存儲(chǔ)器訪問指令算術(shù)運(yùn)算指令邏輯運(yùn)算指令移位、循環(huán)指令展開指令數(shù)據(jù)反轉(zhuǎn)指令位域處理和操作指令條件跳轉(zhuǎn)指令屏障和存儲(chǔ)器屏障指令飽和運(yùn)算指令28存儲(chǔ)器訪問指令后綴裝載指令:LDRx 目標(biāo)寄存器, 源地址保存指令:STRx 源寄存器, 目標(biāo)地址B:
16、從/向指定位置加載/存儲(chǔ)字節(jié)H:從/向指定位置加載/存儲(chǔ)半字無(wú):從/向指定位置加載/存儲(chǔ)字EX:排他性加載/存儲(chǔ)D:從/向指定位置加載/存儲(chǔ)雙字存儲(chǔ)器訪問指令地址形式裝載指令:LDRx 目標(biāo)寄存器, 源地址保存指令:STRx 源寄存器, 目標(biāo)地址立即數(shù):立即數(shù)可以是一個(gè)無(wú)符號(hào)的數(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存儲(chǔ)器訪問指令尋址方式裝載指令:LDR x 目標(biāo)寄存器, 源地址保存指令:STRx 源寄存器, 目標(biāo)地址零偏移: 如:LDR Rd,Rn前索引偏移:如:LDR Rd,Rn,#0 x04!程序相對(duì)偏移:如:LDR Rd,labe1 后索引偏移:如:LDR Rd,Rn,#0 x04存儲(chǔ)器訪問指令單寄存器加載/存儲(chǔ) 0 x55R2R50 x400000000 x123456780 x40000000存儲(chǔ)器地址應(yīng)用示例:LDRR2,R5 ;將R5指向地址的字?jǐn)?shù)據(jù)存入R20 x12345678ARM存儲(chǔ)器訪問指令單寄存器加載應(yīng)用0 x12345678R1R20 x4000000
18、00 x?0 x40000004存儲(chǔ)器地址應(yīng)用示例:STRR1,R2,#0 x04 ;將R1的數(shù)據(jù)存儲(chǔ)到R0+0 x04地址0 x12345678+4ARM存儲(chǔ)器訪問指令單寄存器保存應(yīng)用35存儲(chǔ)器訪問指令多寄存器存取裝載指令:LDM 源地址,目標(biāo)寄存器列表存儲(chǔ)指令:STM 目標(biāo)地址,源寄存器列表存儲(chǔ)器源地址目標(biāo)寄存器1目標(biāo)寄存器n存儲(chǔ)器目標(biāo)地址源寄存器1源寄存器n存儲(chǔ)器訪問指令多寄存器存取裝載指令:LDM存儲(chǔ)指令:STMxxLDM/STM指令搭配不同的后綴實(shí)現(xiàn)不同方式地址增長(zhǎng)方式:IA: 每次傳送后地址加4DB:每次傳送前地址減4存儲(chǔ)器訪問指令多寄存器加載/存儲(chǔ) ARM存儲(chǔ)器訪問指令多寄存器存
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存儲(chǔ)器0 x010 x020 x030 x040 x4000
20、0010應(yīng)用示例:LDMIA R1!,R2-R4,R6 將R1指向的內(nèi)存數(shù)據(jù)讀取到R0-R4和R6寄存器中存儲(chǔ)器訪問指令多寄存器存取41另外兩種存儲(chǔ)器操作為棧的PUSH和POP.PUSH R0,R4-R7,R9POP R2,R342存儲(chǔ)器訪問指令算術(shù)運(yùn)算指令邏輯運(yùn)算指令移位、循環(huán)指令展開指令數(shù)據(jù)反轉(zhuǎn)指令位域處理和操作指令條件跳轉(zhuǎn)指令屏障和存儲(chǔ)器屏障指令飽和運(yùn)算指令常見的算術(shù)四則運(yùn)算指令 44存儲(chǔ)器訪問指令算術(shù)運(yùn)算指令邏輯運(yùn)算指令移位、循環(huán)指令展開指令數(shù)據(jù)反轉(zhuǎn)指令位域處理和操作指令條件跳轉(zhuǎn)指令屏障和存儲(chǔ)器屏障指令飽和運(yùn)算指令46存儲(chǔ)器訪問指令算術(shù)運(yùn)算指令邏輯運(yùn)算指令移位、循環(huán)指令展開指令數(shù)據(jù)反轉(zhuǎn)
21、指令位域處理和操作指令條件跳轉(zhuǎn)指令屏障和存儲(chǔ)器屏障指令飽和運(yùn)算指令47移位操作指令 49存儲(chǔ)器訪問指令算術(shù)運(yùn)算指令邏輯運(yùn)算指令移位、循環(huán)指令展開指令數(shù)據(jù)反轉(zhuǎn)指令位域處理和操作指令條件跳轉(zhuǎn)指令屏障和存儲(chǔ)器屏障指令飽和運(yùn)算指令50帶符號(hào)展開指令 SXTB Rd,Rm ;Rd=signext(Rm7:0)SXTH Rd,Rm ;Rd=signext(Rm15:0)51存儲(chǔ)器訪問指令算術(shù)運(yùn)算指令邏輯運(yùn)算指令移位、循環(huán)指令展開指令數(shù)據(jù)反轉(zhuǎn)指令位域處理和操作指令條件跳轉(zhuǎn)指令屏障和存儲(chǔ)器屏障指令飽和運(yùn)算指令52數(shù)據(jù)反轉(zhuǎn)指令53存儲(chǔ)器訪問指令算術(shù)運(yùn)算指令邏輯運(yùn)算指令移位、循環(huán)指令展開指令數(shù)據(jù)反轉(zhuǎn)指令位域處理和
22、操作指令條件跳轉(zhuǎn)指令屏障和存儲(chǔ)器屏障指令飽和運(yùn)算指令54位域處理指令555657存儲(chǔ)器訪問指令算術(shù)運(yùn)算指令邏輯運(yùn)算指令移位、循環(huán)指令展開指令數(shù)據(jù)反轉(zhuǎn)指令位域處理和操作指令條件跳轉(zhuǎn)指令屏障和存儲(chǔ)器屏障指令飽和運(yùn)算指令58跳轉(zhuǎn)依據(jù)在CM3中,下列指令可以更新PSR 中的標(biāo)志: 16位算術(shù)邏輯指令 32位帶S后綴的算術(shù)邏輯指令 比較指令(如,CMP/CMN)和測(cè)試指令(如 TST/TEQ) 直接寫 PSR/APSR (MSR 指令)操作碼條件助記符標(biāo)志含義0000EQZ=1相等0001NEZ=0不相等0010CS/HSC=1無(wú)符號(hào)數(shù)大于或等于0011CC/LOC=0無(wú)符號(hào)數(shù)小于0100MIN=1負(fù)數(shù)
23、0101PLN=0正數(shù)或零0110VSV=1溢出0111VCV=0沒有溢出1000HIC=1,Z=0無(wú)符號(hào)數(shù)大于1001LSC=0,Z=1無(wú)符號(hào)數(shù)小于或等于1010GEN=V有符號(hào)數(shù)大于或等于 1011LTN!=V有符號(hào)數(shù)小于 1100GTZ=0,N=V有符號(hào)數(shù)大于 1101LEZ=1,N!=V有符號(hào)數(shù)小于或等于 1110AL任何無(wú)條件執(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存儲(chǔ)器訪問指令算術(shù)運(yùn)算指令邏輯運(yùn)算指令移位、循環(huán)指令展開指令數(shù)據(jù)反轉(zhuǎn)指令位域處理和操作指令條件跳轉(zhuǎn)指令屏障和存儲(chǔ)器屏障指令飽和運(yùn)算指令62 隔離指令在一些結(jié)構(gòu)比較復(fù)雜的存儲(chǔ)器系統(tǒng)中是必要的。在這類系統(tǒng)中,如果沒有必要的隔離,會(huì)導(dǎo)致系統(tǒng)發(fā)生紊亂危象(race condition),(相當(dāng)于數(shù)電中的“競(jìng)爭(zhēng)與冒險(xiǎn)”)。 如果RAM的訪問是帶緩沖的,并且寫完之后馬上讀,就必須讓它“喘口氣”用DMB指令來(lái)隔離,以保證緩沖中的數(shù)據(jù)已經(jīng)落實(shí)到RAM中。 DSB比DMB更保險(xiǎn)(當(dāng)然也是有執(zhí)行代價(jià)的),它是寧可錯(cuò)殺也不漏網(wǎng)清
25、空了寫緩沖,使得任何它后面的指令,不管要不要使用先前的存儲(chǔ)器訪問結(jié)果,通通等待訪問完成。 如果某個(gè)程序從下一條要執(zhí)行的指令處更新了自己,但是先前的舊指令已經(jīng)被預(yù)取到流水線中去了,此時(shí)就必須清洗流水線,把舊版本的指令洗出去,再預(yù)取新版本的指令。因此,必須在被更新代碼段的前面使用ISB,以保證舊的代碼從流水線中被清洗出去,不再有機(jī)會(huì)執(zhí)行。63存儲(chǔ)器訪問指令算術(shù)運(yùn)算指令邏輯運(yùn)算指令移位、循環(huán)指令展開指令數(shù)據(jù)反轉(zhuǎn)指令位域處理和操作指令條件跳轉(zhuǎn)指令屏障和存儲(chǔ)器屏障指令飽和運(yùn)算指令64 CM3中的飽和運(yùn)算指令分為兩種: 1)“沒有直流分量”的交流信號(hào)飽和帶符號(hào)飽和運(yùn)算; 2)無(wú)符號(hào)飽和運(yùn)算則類似于“削頂失
26、真單向?qū)ā薄?65指令名 功能描述 SSAT.W Rd, #imm5, Rn, ,shift 以帶符號(hào)數(shù)的邊界進(jìn)行飽和運(yùn)算(交流) USAT.W Rd, #imm5, Rn, ,shift 以無(wú)符號(hào)數(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)級(jí)狀態(tài)下使用,APSR除外,APSR可以在用戶級(jí)
27、狀態(tài)下使用。MRS , ;加載特殊功能寄存器的值到Rn MSR , ;存儲(chǔ)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”,并且對(duì)T和E的順序沒有要求,其中T對(duì)應(yīng)條件成立時(shí)執(zhí)行的語(yǔ)句,E對(duì)應(yīng)條件不成立時(shí)執(zhí)行的語(yǔ)句。72MSR/MRSIF-THENSDIV/UDIVREV/REVH/REVSHSXTB/SXTH/UXTB/UXTHUBFX/SBFXLDRD/STRD表格跳轉(zhuǎn)字節(jié)/表格跳轉(zhuǎn)半字737432位硬件除法指令MSR/MRSIF-THENS
溫馨提示
- 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年光伏電站設(shè)備維修保養(yǎng)服務(wù)合同
- 2025年度主題公園游樂設(shè)施場(chǎng)地租賃合同范本
- 2025年度智慧社區(qū)建設(shè)融資擔(dān)保合同規(guī)范
- 2025年度戶外廣告宣傳牌環(huán)境適應(yīng)性設(shè)計(jì)合同
- 2025年度城市綠化景觀工程勞務(wù)分包合同
- 損失評(píng)估申請(qǐng)書
- 2025年度建筑設(shè)備安裝工程分包合同范本
- 2025年度城市交通擁堵治理項(xiàng)目合同
- 競(jìng)選宣傳部部長(zhǎng)申請(qǐng)書
- 2025年度養(yǎng)豬場(chǎng)養(yǎng)殖廢棄物資源化利用技術(shù)研發(fā)合同
- 贛價(jià)協(xié)〔2023〕9號(hào)江西省建設(shè)工程造價(jià)咨詢服務(wù)收費(fèi)基準(zhǔn)價(jià)
- 數(shù)控機(jī)床作業(yè)指導(dǎo)書
- 6年級(jí)英語(yǔ)奧數(shù)題及答案
- 銷售黃金法則ABC三角溝通法則
- 清潔度標(biāo)準(zhǔn)、測(cè)試及過程控制
- 灘坑水電站水生生物增殖放流站工程(B區(qū))施工組織設(shè)計(jì)
- 質(zhì)量成本分析和核算ppt課件
- 醫(yī)院患者個(gè)人信息修正管理規(guī)定
- 取水隧洞爆破設(shè)計(jì)
- Q∕GDW 12100-2021 電力物聯(lián)網(wǎng)感知層技術(shù)導(dǎo)則
評(píng)論
0/150
提交評(píng)論