freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

嵌入式系統(tǒng)概論—基于32位微處理器與實(shí)時(shí)操作系統(tǒng)第四講(更新版)

2024-11-19 21:09上一頁面

下一頁面
  

【正文】 ink register STMFD r13!, {r0r2,r14} BL SUB2 .. LDMFD r13!, {r0r2,pc} SUB2: .. MOV pc, r14 。return from SWI handler LDMFD sp!, {r0r12,pc}^ 50 控制和分支指令 ? 控制指令 ? 分支和分支連接 ?跳到希望的指令中 ?保存當(dāng)前的 PC并返回 (with ‘L’ bit) ? 分支和交換 ?跳到期望的指令中與指令集交換 ?Rm[0] == 1: Subsequent inst. are THUMB. ?Rm[0] == 0: Subsequent inst. are ARM. co n d 1 0 1 L 2 4 b i t s i g n e d w o r d o f f se t31 28 27 25 24 23 0cond Rm 0 0 0 1 0 0 1 0 1 1 1 1 1 1 1 1 1 1 1 1 0 0 31 28 27 6 5 4 3 0 1 L 51 ? Branch : B{cond} label ? Branch with Link : BL{cond} subroutine_label ? 處理器把偏移量左移兩位,進(jìn)行符號(hào)擴(kuò)展后再與 PC相加 ? 跳轉(zhuǎn)范圍: 177。 Rm Rd 3 2 1 temp 存儲(chǔ)器 Rn SWP 44 SWAP指令的用法 ? PRE mem32[0x9000]=0x12345678, r0=0x00000000, r1=0x11112222, r2=0x00009000 執(zhí)行操作: SWP r0, r1, [r2] ? POST: mem32[0x9000]=0x11112222, r0=0x12345678, r1=0x11112222, r2=0x00009000 ? 交換指令多用于實(shí)現(xiàn)操作系統(tǒng)中的信號(hào)量和互斥操作,該指令有修飾符 B,即有字交換和字節(jié)交換兩種形式; 45 SWP指令應(yīng)用示例 Spin MOV r1, =semaphore MOV r2, 1 SWP r3, r2, [r1] CMP r3, 1 BEQ spin 注:信號(hào)量指向的單元是 0或 1,如果為 1,則表示該服務(wù)被另一個(gè)過程使用,程序繼續(xù)循環(huán),直至為 0 46 軟件中斷 (SWI) ? 產(chǎn)生一個(gè)異常陷阱,跳轉(zhuǎn)到 SWI 硬件向量。 r2 points to TABLE2 LOOP: LDR r0, [r1], 4 STR r0, [r2], 4 ... TABLE1: ... TABLE2:... 31 多寄存器數(shù)據(jù)傳送指令 LDM ? 多數(shù)據(jù)傳送指令 (LDM, STM) ? load (LDM) 或 store (STM) 當(dāng)前可訪問寄存器的任意子集 ? 使用 ?堆棧 : maintaining full or empty stacks which can grow up or down memory ?上下文切換 : 保存或重新存儲(chǔ)工作寄存器 ?塊拷貝 :在主存儲(chǔ)器中移動(dòng)大數(shù)據(jù)塊 ? 尋址 ?Pre/Post indexing ?Auto increment or decrement ?回寫到基址寄存器 Write back the base register 32 多寄存器數(shù)據(jù)傳送指令的要點(diǎn) ? 多寄存器 Load/Store指令會(huì)增加中斷的延遲,因?yàn)?ARM不會(huì)打斷正在執(zhí)行的指令去響應(yīng)中斷,而必須等到指令執(zhí)行完成; ? 一般編譯器將提供一個(gè)選項(xiàng)以控制 Load/Store指令可以傳送的最大寄存器數(shù)目,以限制最大中斷延遲。 CMP r0,0 MOVEQ r0,1。 for hex 19 條件碼標(biāo)志 ? 任何數(shù)據(jù)處理指令都可以設(shè)置條件碼 (N, Z, V, and C) ? 適用于除比較操作外的所有數(shù)據(jù)處理指令 ? 特殊的請(qǐng)求必須在匯編語言中實(shí)現(xiàn) ,這種請(qǐng)求是通過把 ” S”增加到選擇代碼中指定的 ? 算術(shù)操作設(shè)置所有的標(biāo)志位 (N, Z, C, and V) ? 邏輯和移位操作設(shè)置 N and Z ? 當(dāng)無移位操作時(shí) ,保存 V和 C,或根據(jù)移位操作設(shè)置 ADDS r2, r2, r0 。若源操作數(shù)為正數(shù),則字的高端空出的位補(bǔ) 0。1 嵌入式系統(tǒng)概論 — 基于 32位微處理器與實(shí)時(shí)操作系統(tǒng) 第四講 ARM指令集與編程 北京航空航天大學(xué) 機(jī)器人研究所 魏洪興 2 指令長(zhǎng)度 ? 指令集可以是以下任一種 ? 32 bits 長(zhǎng) (ARM狀態(tài) ) ? 16 bits 長(zhǎng) (Thumb 狀態(tài) ) ? ARM7TDMI 支持 3種數(shù)據(jù)類型 ? 字節(jié) (8bit) ? 半字 (16bit) ? 字 (32bit) ? 字必須被排成 4個(gè)字節(jié)邊界對(duì)齊 ,半字必須被排列成 2個(gè)字節(jié)邊界對(duì)齊 3 ARM 指令集的特點(diǎn) ? 向后兼容:新版本增加指令,并保持指令向后兼容; ? Loadstore 結(jié)構(gòu) * ? load/store –從存儲(chǔ)器中讀某個(gè)值 ,操作完后再將其放回存儲(chǔ)器中 ? 只對(duì)存放在寄存器的數(shù)據(jù)進(jìn)行處理; ? 對(duì)于存儲(chǔ)器中的數(shù)據(jù),只能使用 load/store指令進(jìn)行存取 4 指令格式 ? 指令格式 ? 3 地址指令格式 ? 在 ARM狀態(tài)中使用 ? 例 指令語法 目標(biāo)寄存器(Rd) 源寄存器 1(Rn) 源寄存器 2(Rm) ADD r3,r1,r2 r3 r1 r2 5 ARM 指令分類 ? 數(shù)據(jù)處理指令 – 使用和改變寄存器的值 ? 數(shù)據(jù)傳送指令 – 把存儲(chǔ)器的值拷貝到寄存器中 (load) or 把寄存器中的值拷貝到存儲(chǔ)器中 (store) ? 控制流指令 ? 分支 ? 分支和鏈接 , 保存返回的地址 ,以恢復(fù)最先的次序 ? 軟件中斷指令 ? 程序狀態(tài)寄存器指令 ? 協(xié)處理器指令 6 ARM指令編碼格式 ? 說明 ? Cond ? 指令執(zhí)行的條件編碼 ? Opcode ? 指令操作符編碼 ? S ? 決定指令的操作是否影響 CPSR的值 ? Rd ? 操作目標(biāo)寄存器編碼 ? Rn ? 包含第一操作數(shù)的寄存器編碼 ? Shifter_operand ? 表示第二操作數(shù) cond 001 opcode s Rn Rd Shifter_operand 31 28 27 25 24 21 20 19 16 15 12 11 8 7 0 7 ARM指令集 8 數(shù)據(jù)處理指令 1 ? 數(shù)據(jù)處理指令的類別 ? 算術(shù)操作 ? 按位邏輯操作 ? 寄存器移位操作 ? 比較操作 ? 操作數(shù) : 32bits 寬 。算術(shù)移位的對(duì)象是帶符號(hào)數(shù),在移位過程中必須保持操作數(shù)的符號(hào)不變。ff r8 := r7[7:0], amp。 N=V Z=1 or N=!V ? 下表為所有可能的條件碼: ? 注意 :AL為默認(rèn)狀態(tài),不需要單獨(dú)指出 22 條件執(zhí)行示例 ? 一系列的指令都使用條件指令 if (a==0) func(1)。 r1 points to TABLE1 ADR r2, TABLE2 。 ? 語法: ? SWP{cond}{B} Rd, Rm, [Rn] ? 可用作信號(hào)量 ? 不能由 armcc編譯產(chǎn)生,必須使用匯編器。 r10contains the SWI number BL service_routine 。 return BL SUB1 .. SUB1: 。 ? 這有三種協(xié)處理器指令 ? 協(xié)處理器數(shù)據(jù)處理指令 ? CDP:初始化協(xié)處理器數(shù)據(jù)處理操作 ? 協(xié)處理器寄存器傳送指令 ? MRC: 從 ARM 寄存器移到協(xié)處理器寄存器 ? MCR:從協(xié)處理器寄存器移到 ARM 寄存器 ? 協(xié) 處理器存儲(chǔ)器傳送指令 ? LDC:從存儲(chǔ)器裝載到協(xié)處理器寄存器 ? STC:從協(xié)處理器寄存器存儲(chǔ)到存儲(chǔ)器 60 常量的裝載 ? ARM指令不用于將一個(gè) 32位的常量裝入寄存器,因?yàn)?ARM本身是32位的,所以指令中不可能再定義一個(gè)普通的 32位常量; ? ARM增加了 2條偽指令,把 32位常量送入寄存器: ? 例: LDR Rd, =constant ; LDR—常量裝載偽指令 ADR Rd, Label ; ADR—地址裝載偽指令 61 ? 為允許裝載大常數(shù),匯編器提供了一條偽指令 : ? LDR rd, =const ? 它可能匯編成下列指令: ? MOV or MVN。 偽指令 70 符號(hào)定義偽指令 Ⅰ ? 用于定義 ARM匯編程序中的變量 、 對(duì)變量賦值以及定義寄存器的別名等 。 ? DCB ? DCW/DCWU ? DCD/DCDU ? DCQ/DCQU ? DCFS/DCFSU ? DCFD/DCFDU ? SPACE ? FIELD ? MAP 76 數(shù)據(jù)定義偽指令 Ⅱ ? 1. DCB: 標(biāo)號(hào) DCB 表達(dá)式 說明: DCB用于分配一塊 字節(jié) 單元并用偽指令中指定的表達(dá)式進(jìn)行初始化 。 78 數(shù)據(jù)定義偽指令 Ⅳ ? : 標(biāo)號(hào) DCFD/DCFDU 表達(dá)式 說明: DCFD用于為雙精度的浮點(diǎn)數(shù)分配一片連續(xù)的字存儲(chǔ)單元并用偽指令中指定的表達(dá)式初始化 , 它定義的存儲(chǔ)空間是字對(duì)齊的 , 每個(gè)雙精度的浮點(diǎn)數(shù)占據(jù)兩個(gè)字單元 。在源程序被編譯時(shí),匯編器將宏調(diào)用展開,用宏定義中的指令序列替換程序中的宏調(diào)用,并將實(shí)際參數(shù)的值傳遞給宏定義中的參數(shù)。 84 其他偽指令 Ⅰ ? : ASSERT 邏輯表達(dá)式 說明: ASSERT用來表示程序的編譯必須滿足一定的條件,如果邏輯表達(dá)式不滿足,則編譯器會(huì)報(bào)錯(cuò)。 常見屬性如下: ? DATA:定義數(shù)據(jù)段 。 CODE32偽操作指示編譯器后面的代碼為 32位的 ARM指令 。 ? : IMPORT 標(biāo)號(hào) [, WEAK] 說明: IMPORT告訴編譯器這個(gè)標(biāo)號(hào)要在當(dāng)前源文件中使用 , 但標(biāo)號(hào)是在其他的源文件中定義的 。 其中 , 名稱為給寄存器定義的別名 , 表達(dá)式為寄存器的編碼 。 92 應(yīng)用示例 系統(tǒng)初始化 初 始 化 存 儲(chǔ) 器 及S D R A M初 始 化 堆 棧設(shè) 置 異 常 向 量初 始 化 C 語 言 運(yùn) 行 環(huán)境 : 設(shè) 置 參 數(shù)改 變 C P U 運(yùn) 行 模 式 為 用戶 模 式 ( U s e r M o d e )運(yùn) 行 C 程 序復(fù) 位1 . R 1 4 _ s v c = P C2 . S P S R _ s v c = C P S R3 . S P C 和 S P S R 未 定 義4 . C P S R 的 M [ 4 : 0 ] = 1 0 0 1 15 . C P S R 的 I , F 位 置 16 . C P S R 的 T 位 置 17 . P C = 08 . 在 A R M 模 式 下 執(zhí) 行 0 位置 的 指 令復(fù)位動(dòng)作 初始化過程 93 初始化堆棧 (1) ? 第一步 :定義 6種操作模式 AREA RamData, DATA, READWRITE ^ 0xDffff0010240 (MAP:定義存儲(chǔ)器的起始地址 ) UserStack 2048。let sp=UnderStack 設(shè)定中止模式堆棧 : mrs r0,cpsr bic r0,r0,0x1f orr r1,r0,0x17|0xc0 msr cpsr_cxsf,r1 。let sp=SVCStack 97 ATPCS( arm/thumb程序調(diào)用規(guī)范) r8 r9/sb r10/sl r11 r12 r13/sp r14/lr r15/pc r0
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1