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

正文內(nèi)容

chap03arm微處理器體系結(jié)構(gòu)與指令集-wenkub

2023-05-27 13:57:26 本頁面
 

【正文】 pICI_ISPC = INT_TIMER5。 (都是無符號數(shù) ) Thumb代碼: CMP R0,R1 BHI A_ADD ; B ADD R1,R1,1 B OVER A_ADD ADD R0,R0,1 OVER …… ARM 代碼: CMP R0, R1 ADDHI R0, R0, 1 ADDLS R1, R1, 1 3.程序狀態(tài)寄存器 ④ 標(biāo)志位含義 標(biāo)志位 N ? 當(dāng)用兩個補(bǔ)碼表示的帶符號數(shù)進(jìn)行運(yùn)算時 ? N=1表示運(yùn)算結(jié)果為負(fù)數(shù), N=0表示運(yùn)算結(jié)果為正數(shù)或零 標(biāo)志位 Z ? Z=1表示運(yùn)算結(jié)果為零; Z=0 表示運(yùn)算結(jié)果為非零 3.程序狀態(tài)寄存器 3.程序狀態(tài)寄存器 標(biāo)志位 C ? 加法運(yùn)算(包括比較指令 CMN) 當(dāng)運(yùn)算結(jié)果產(chǎn)生了進(jìn)位時, C=1,否則 C=0 ? 減法運(yùn)算(包括比較指令 CMP) 當(dāng)運(yùn)算結(jié)果產(chǎn)生了借位時, C=1,否則 C=0 ? 包含移位操作的非加 /減運(yùn)算指令, C為移出值的最后一位 ? 對于其他的非加 /減運(yùn)算指令, C的值通常不改變 標(biāo)志位 V ? 對于加 /減法運(yùn)算指令,當(dāng)操作數(shù)和運(yùn)算結(jié)果為補(bǔ)碼表示的帶符號數(shù)時, V=1表示符號位溢出 ? 對于其他的非加 /減運(yùn)算指令, V的值通常不改變 3.程序狀態(tài)寄存器 ( 4)控制位 3.程序狀態(tài)寄存器 ① 中斷禁止位 I和 F ? I=1禁止 IRQ中斷: I=0允許 IRQ中斷 ? F=1禁止 FIQ中斷: F=0允許 FIQ中斷 ② 運(yùn)行狀態(tài)控制位 T ? 對于 ARM v5及以上的 T系列處理器,當(dāng)該位為 1時,程序運(yùn)行于 Thumb狀態(tài),否則運(yùn)行于 ARM狀態(tài) ? 對于 ARM v5及以上的非 T系列處理器,當(dāng)該位為 1時,執(zhí)行下一條指令以引起為定義指令異常;當(dāng)該位為 0時,表示運(yùn)行于 ARM狀態(tài) 3.程序狀態(tài)寄存器 ③ 運(yùn)行模式位 M[4:0] M[4: 0] 處理器工作 模式 可訪問的寄存器 0b10000 用戶模式 PC, CPSR, R14~ R0 0b10001 FIQ模式 PC, R7~ R0, CPSR, SPSR_fiq, R14_fiq~ R8_fiq 0b10010 IRQ模式 PC, R12~ R0, CPSR, SPSR_irq, R14_irq, R13_irq 0b10011 管理模式 PC, R12~ R0, CPSR, SPSR_svc, R14_svc, R13_svc 0b10111 中止模式 PC, R12~ R0, CPSR, SPSR_abt, R14_abt, R13_abt 0b11011 未定義模式 PC, R12~ R0, CPSR, SPSR_und, R14_und, R13_und 0b11111 系統(tǒng)模式 PC, R14~ R0, CPSR( ARM v4及以上版本) 表 34 運(yùn)行模式位 M[4: 0]的具體含義 3.程序狀態(tài)寄存器 ( 5)保留位 PSR中沒有使用的位,當(dāng)改變 PSR匯總的條件碼標(biāo)志位或者控制位時,保留為不會被改變,在程序中也不能使用保留位來存儲數(shù)據(jù),保留位將用于 ARM版本的擴(kuò)展。 數(shù)據(jù)中止 若處理器數(shù)據(jù)訪問指令的地址不存在,或該地址不允許當(dāng)前指令訪問時,產(chǎn)生數(shù)據(jù)中止異常。 表 35 ARM體系結(jié)構(gòu)支持的異常 異常 2.對異常的響應(yīng) ① 將下一條指令的地址存入相應(yīng)連接寄存器 LR,以便程序在處理異常返回時能從正確的位置重新開始執(zhí)行。 ④ 強(qiáng)制 PC從相關(guān)的異常向量地址取下一條指令執(zhí)行,跳轉(zhuǎn)到相應(yīng)的異常處理程序。 ② 將 SPSR內(nèi)容送回 CPSR中。數(shù)據(jù)中止 ?恢復(fù) PC(從 R14_abt)和 CPSR(從 SPSR_abt)的值,并重新執(zhí)行產(chǎn)生中止的指令 ? 指令預(yù)取中止:發(fā)生在指令預(yù)取時 ? 數(shù)據(jù)中止:發(fā)生在數(shù)據(jù)訪問時 4.各類異常的具體描述 ④ 中止異常的響應(yīng)過程: SPSR_abt = CPSR CPSR[4:0] = 0b10111 CPSR[5] = 0 ;切換到 ARM工作狀態(tài) // CPSR[6]保持不變 CPSR[7] = 1 ;禁止新的 IRQ異常 R14_abt = Return Link PC = 0x0000000c / 0x00000010 4.各類異常的具體描述 ( 5) IRQ異常 ① IRQ異常屬于正常的中斷請求, IRQ優(yōu)先級低于 FIQ ? 若 CPSR的 I位置 1,則禁止 IQR中斷,若 CPSR的 I位清零,處理器會在指令執(zhí)行完之前檢查 IRQ的輸入 ? 注意只有在特權(quán)模式下才能改變 I位的狀態(tài) ② IRQ處理程序執(zhí)行以下指令返回 ? SUBS PC, R14_irq, 4 ? 該指令將寄存器 R14_irq的值減去 4后,復(fù)制到程序計數(shù)器PC中,同時將 SPSR_irq寄存器的內(nèi)容復(fù)制到 CPSR中,并返回到引起中斷的下一條指令 4.各類異常的具體描述 ③ IRQ異常的響應(yīng)過程: SPSR_irq = CPSR CPSR[4:0] = 0b10010 CPSR[5] = 0 ;切換到 ARM工作狀態(tài) // CPSR[6]保持不變 CPSR[7] = 1 ;禁止新的 IRQ異常 R14_irq = Return Link PC = 0x00000018 4.各類異常的具體描述 ( 6) FIQ異常 ① FIQ異常是為了支持?jǐn)?shù)據(jù)傳輸或者通道處理而設(shè)計的 ?若將 CPSR的 F位置 1,則禁止 FIQ中斷;若將 CPSR的 F位清零,處理器會在指令執(zhí)行時檢查 FIQ的輸入 ?注意只有在特權(quán)模式下才能改變 F位的狀態(tài) ② FIQ處理程序執(zhí)行以下指令返回 ? SUBS PC, R14_fiq, 4 ?將寄存器 R14_fiq的值減去 4后,復(fù)制到程序計數(shù)器 PC中,同時將 SPSR_fiq寄存器的內(nèi)容復(fù)制到 CPSR中,并返回到引起中斷的下一條指令 4.各類異常的具體描述 SPSR_fiq = CPSR CPSR[4:0] = 0b10001 CPSR[5] = 0 。 /* 異常向量表 */ Reset LDR PC, ResetAddr LDR PC, UndefinedAddr LDR PC, SWI_Addr LDR PC, PrefetchAddr LDR PC, DataAbortAddr DCD 0 LDR PC, IRQ_Addr LDR PC, FIQ_Addr 異常 6.異常優(yōu)先級 優(yōu)先級 異常 1 復(fù)位 2 數(shù)據(jù)中止 3 FIQ 4 IRQ 5 預(yù)取指令中止 6 未定義指令、 SWI 異常 表 38 異常優(yōu)先級 7.應(yīng)用程序中的異常處理 異常 ① 應(yīng)用程序首先要進(jìn)行異常處理 ② 采用的方式 在異常向量表中的特定位置放置一條跳轉(zhuǎn)指令,跳轉(zhuǎn)到異常處理程序。 While(1)。 While(1)。 While(1)。 R0 ← R0+1 ADD R0, R0, 0x3f 。 R0 ← [R1] STR R0,[R1] 。 R0 ← [R1+4] 、 R1 ← R1+4 LDR R0, [R1], 4 。 例如: LDMIA R0!, {R1,R2,R3,R4} ; R1 ← [R0] ; R2 ← [R0+4] ; R3 ← [R0+8] ; R4 ← [R0+12] ARM 指令的尋址方式 7.堆棧尋址 ① 根據(jù)堆棧指針指向來分 ? 堆棧指針指向最后一個壓入堆棧的數(shù)據(jù)時,稱為滿堆棧 ? 堆棧指針指向下一個將要放入數(shù)據(jù)得空位置時,稱為空堆棧 ② 堆棧的生成方式 ? 堆棧指針遞增計數(shù) ——遞增堆棧 ? 堆棧指針遞減計數(shù) ——遞減堆棧 ARM 指令的尋址方式 7.堆棧尋址 ③ ARM微處理器支持這四種類型的堆棧工作方式 ? 滿遞增堆棧 :堆棧指針指向最后壓入的數(shù)據(jù),且由低地址向高地址生成 ——{LDMFA, STMFA} ? 滿遞減堆棧 :堆棧指針指向最后壓入的數(shù)據(jù),且由高地址向低地址生成 ——{LDMFD, STMFD} ? 空遞增堆棧 :堆棧指針指向下一個將要放入數(shù)據(jù)得空位置,且由低地址向高地址生成 ——{LDMEA, STMEA} ? 空遞減堆棧 :堆棧指針指向下一個將要放入數(shù)據(jù)的空位置,且由高地址向低地址生成 ——{LDMEA, STMEA} LDMFD sp!,{r4r7,pc} SP 100 FF 1234 AOBE 8034 1010 1234 8420 9753 r4 1 r5 14544 r6 0 r7 12 lr 9048 pc 9020 100FF1234A0BE A0BE8034r4 100 r5 FF r6 1234 r7 A0BE lr 8034 ABCD 8765 102E 16 FFFF 1010 1234 8420 9753 存儲器頂 SP SP 100 FF 1234A0BE 8034SP Old SP ④ ARM堆棧操作通過塊傳送指令來完成 : ? STMFD (Push) 塊存儲 Full Descending stack [STMDB] ? LDMFD (Pop) 塊裝載 Full Descending stack [LDMIA] STMFD sp!,{r4r7,lr} 7.堆棧尋址 0x80018 0x00000001 0x80014 0x00000002 0x80010 Empty 0x8000c Empty 0x80018 0x00000001 0x80014 0x00000002 0x80010 0x00000003 0x8000c 0x00000002 PRE 地址 數(shù)據(jù) POST 地址 數(shù)據(jù) SP SP PRE : r1=0x00000002, r4=0x00000003, sp=0x00080014 執(zhí)行指令: STMFD sp!, {r1,r4} POST: r1=0x00000002, r4=0x00000003, sp=0x0008000c 7.堆棧尋址 例:把寄存器內(nèi)容放入堆棧,更新 sp ARM指令集 1. ARM存儲器訪問指令 ( 1)加載 /存儲字和無符號字節(jié)指令 LDR和 STR ① LDR 字?jǐn)?shù)據(jù)加載指令 格式 : LDR{條件 } 目標(biāo)寄存器 ,存儲器地址 功能 : 從存儲器中將一個 32位的字?jǐn)?shù)據(jù)傳送到目的寄存器中。 將地址為 R1+8的字?jǐn)?shù)據(jù)讀入寄存器 R0 LDR R0,[R1,R2]! 。 LDRB R0,[R1,# 8] ;將地址為 R1+ 8的字節(jié)數(shù)據(jù)讀入 R0,將 R0高 24位清 0。 LDRH R0, [R1] ;將地址為 R1的半字?jǐn)?shù)據(jù)讀入寄存器R0,并將 R0的高 16位清零。 將 R0中的字?jǐn)?shù)據(jù)寫入以 R1為地址的存儲器中,并將新地址 R1+ 8寫入R1。 STRB R0, [R1,# 8] ;將寄存器 R0中的字節(jié)數(shù)據(jù)寫入以 R1+ 8為地址的存儲器中 1. ARM存儲器訪問指令 ⑥ STRH 半字?jǐn)?shù)據(jù)存儲指令 格式 : STR{條件 }H 源寄存器 ,存儲器地址 功能:用于從源寄存器中將一個 16位的半字?jǐn)?shù)據(jù)傳送到存儲器中。 1. ARM存儲器訪問指令
點(diǎn)擊復(fù)制文檔內(nèi)容
試題試卷相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1