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

正文內(nèi)容

嵌入式系統(tǒng)概論—基于32位微處理器與實(shí)時(shí)操作系統(tǒng)第四講-預(yù)覽頁

2024-10-30 21:09 上一頁面

下一頁面
 

【正文】 用 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ù)傳送指令 – 把存儲器的值拷貝到寄存器中 (load) or 把寄存器中的值拷貝到存儲器中 (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 寬 。寄存器中字的低端空出的位補(bǔ) 0。算術(shù)移位的對象是帶符號數(shù),在移位過程中必須保持操作數(shù)的符號不變。從字的最低端移出的位填入字的高端空出的位。ff r8 := r7[7:0], amp。 CMP r3,0 CMP r3,0 BEQ skip ADDNE r0,r1,r2 ADD r0,r1,r2 skip ? 默認(rèn)情況下,數(shù)據(jù)處理指令不影響 程序狀態(tài)寄存器 的條件碼標(biāo)志位,但可以選擇通過添加“ S‖來影響標(biāo)志位。 N=V Z=1 or N=!V ? 下表為所有可能的條件碼: ? 注意 :AL為默認(rèn)狀態(tài),不需要單獨(dú)指出 22 條件執(zhí)行示例 ? 一系列的指令都使用條件指令 if (a==0) func(1)。 CMP r0,0 MOVEQ r1,0 MOVGT r1,1 ? 使用條件比較指令 if (a==4 || a==10) x=0。 r1 points to TABLE1 ADR r2, TABLE2 。存儲 32字節(jié)并更新 r10指針 CMP r9, r11 。 ? 語法: ? SWP{cond}{B} Rd, Rm, [Rn] ? 可用作信號量 ? 不能由 armcc編譯產(chǎn)生,必須使用匯編器。 ? 語法: ? SWI{cond} SWI number 47 軟件中斷 (SWI)執(zhí)行的操作 指令 名稱 執(zhí)行操作 SWI 軟件中斷 Lr_svc=SWI指令后面的指令地址 spsr_svc=cpsr pc=vectors+0x8 cpsr模式 =SVC cpsr I=1(屏蔽 IRQ中斷) 48 SWI中斷處理程序 ? 處理軟件中斷的代碼段稱為中斷處理程序( SWI Handler),中斷處理程序是通過執(zhí)行指令的地址獲取軟件中斷號,指令地址是從 lr計(jì)算出來的; ? SWI號的確定方法: SWI_Number=SWI instructionand NOT(0xff00000000) 28 31 24 27 0 Cond 1 1 1 1 SWI number (ignored by processor) 23 條件域 49 SWI處理程序應(yīng)用示例 ? SWI_handler 。 r10contains the SWI number BL service_routine 。 o v e rf l o w o c c u rre d B GT Gre a te r th a n S i g n e d i n te g e r c o m p a ri s o n g a v e g re a te r th a n B GE Gre a te r o r e q u a l S i g n e d i n te g e r c o m p a ri s o n g a v e g re a te r o r equal B L T L e s s t h a n Si g n e d i n te g e r c o m p a ri s o n g a v e l e s s t h a n B L E L e s s o r e q u a l S i g n e d i n te g e r c o m p a ri s o n g a v e l e s s t h a n o r equal B HI Hi g h e r Un s i g n e d c o m p a ri s o n g a v e h i g h e r B L S L o w e r o r s a m e Un s i g n e d c o m p a ri s o n g a v e l o w e r o r s a m e 53 分支和鏈接指令 ? 分支子程序 (r14 serves as a link register) ? 嵌套子程序 BL SUBR 。 return BL SUB1 .. SUB1: 。 Rd = psr ? MSR{cond} psr[_fields],Rm 。 ? 這有三種協(xié)處理器指令 ? 協(xié)處理器數(shù)據(jù)處理指令 ? CDP:初始化協(xié)處理器數(shù)據(jù)處理操作 ? 協(xié)處理器寄存器傳送指令 ? MRC: 從 ARM 寄存器移到協(xié)處理器寄存器 ? MCR:從協(xié)處理器寄存器移到 ARM 寄存器 ? 協(xié) 處理器存儲器傳送指令 ? LDC:從存儲器裝載到協(xié)處理器寄存器 ? STC:從協(xié)處理器寄存器存儲到存儲器 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。 ? 是 ARM 指令集的一個(gè)子集。 偽指令 70 符號定義偽指令 Ⅰ ? 用于定義 ARM匯編程序中的變量 、 對變量賦值以及定義寄存器的別名等 。 73 符號定義偽指令 Ⅳ 3. SETA、 SETL、 SETS ? 格式:變量名 SETA/SETL/SETS 表達(dá)式 ? 說明: SETA:給一個(gè)數(shù)字變量賦值; ?SETL:給一個(gè)邏輯變量賦值; ?SETS:給一個(gè)字符串變 Ⅳ 量賦值; 格式中的變量名必須為已經(jīng)定義過的全局或局部變量 , 表達(dá)式為將要賦給變量的值 。 ? DCB ? DCW/DCWU ? DCD/DCDU ? DCQ/DCQU ? DCFS/DCFSU ? DCFD/DCFDU ? SPACE ? FIELD ? MAP 76 數(shù)據(jù)定義偽指令 Ⅱ ? 1. DCB: 標(biāo)號 DCB 表達(dá)式 說明: DCB用于分配一塊 字節(jié) 單元并用偽指令中指定的表達(dá)式進(jìn)行初始化 。 DCD也可用“ amp。 78 數(shù)據(jù)定義偽指令 Ⅳ ? : 標(biāo)號 DCFD/DCFDU 表達(dá)式 說明: DCFD用于為雙精度的浮點(diǎn)數(shù)分配一片連續(xù)的字存儲單元并用偽指令中指定的表達(dá)式初始化 , 它定義的存儲空間是字對齊的 , 每個(gè)雙精度的浮點(diǎn)數(shù)占據(jù)兩個(gè)字單元 。 ? 8. MAP: MAP 表達(dá)式 [, 基址寄存器 ] 說明: MAP定義一個(gè)結(jié)構(gòu)化的內(nèi)存表的首地址 , “ ^ ” 可以用來代替 MAP。在源程序被編譯時(shí),匯編器將宏調(diào)用展開,用宏定義中的指令序列替換程序中的宏調(diào)用,并將實(shí)際參數(shù)的值傳遞給宏定義中的參數(shù)。 IF、 ELSE、 ENDIF偽指令可以嵌套使用 。 84 其他偽指令 Ⅰ ? : ASSERT 邏輯表達(dá)式 說明: ASSERT用來表示程序的編譯必須滿足一定的條件,如果邏輯表達(dá)式不滿足,則編譯器會報(bào)錯(cuò)。 偏移量也是個(gè)數(shù)字表達(dá)式 , 如果存在偏移量 , 則當(dāng)前位置的自動對齊到: 2的表達(dá)式值次方+偏移量 。 常見屬性如下: ? DATA:定義數(shù)據(jù)段 。 ? ALIGN=表達(dá)式:對齊方式為 2表達(dá)式次方 , 例如:表達(dá)式 =3, 則對齊方式為 8字節(jié)對齊 。 CODE32偽操作指示編譯器后面的代碼為 32位的 ARM指令 。 ? : 名稱 EQU 表達(dá)式 [, 類型 ] 說明: EQU用于將程序中的數(shù)字常量 、 標(biāo)號 、 基于寄存器的值賦予一個(gè)等效的名稱 , 這一點(diǎn)類似于 C語言中的# define, 可用 “ *” 代替 EQU。 ? : IMPORT 標(biāo)號 [, WEAK] 說明: IMPORT告訴編譯器這個(gè)標(biāo)號要在當(dāng)前源文件中使用 , 但標(biāo)號是在其他的源文件中定義的 。 89 其他偽指令 Ⅵ ? : EXTERN 標(biāo)號 [,WEAK] 說明: EXTERN告訴編譯器所使用的標(biāo)號要在當(dāng)前源文件中引用 ,但該標(biāo)號是在其他的源文件中定義的 。 其中 , 名稱為給寄存器定義的別名 , 表達(dá)式為寄存器的編碼 。 GET/INCLUDE只能用于包含源文件 , 包含其他文件則需要使用 INCBIN偽指令 。 92 應(yīng)用示例 系統(tǒng)初始化 初 始 化 存 儲 器 及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ù)位動作 初始化過程 93 初始化堆棧 (1) ? 第一步 :定義 6種操作模式 AREA RamData, DATA, READWRITE ^ 0xDffff0010240 (MAP:定義存儲器的起始地址 ) UserStack 2048。 IRQStack 2048。let sp=UnderStack 設(shè)定中止模式堆棧 : mrs r0,cpsr bic r0,r0,0x1f orr r1,r0,0x17|0xc0 msr cpsr_cxsf,r1 。let sp=IRQStack 設(shè)定快速中斷模式堆棧 : mrs r0,cpsr bic r0,r0,0x1f orr r1,r0,0x11|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)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1