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

正文內(nèi)容

chap03arm微處理器體系結(jié)構(gòu)與指令集(編輯修改稿)

2025-06-08 13:57 本頁(yè)面
 

【文章內(nèi)容簡(jiǎn)介】 生時(shí), SPSR用于保存 CPSR的當(dāng)前值,從異常退出時(shí)則可由 SPSR來(lái)恢復(fù) CPSR ? 用戶模式和系統(tǒng)模式?jīng)]有 SPSR 1. ARM狀態(tài)下的寄存器組織 2. Thumb狀態(tài)下的寄存器組織 ? Thumb狀態(tài)下的寄存器集是 ARM狀態(tài)下寄存器集的一個(gè)子集 ? 程序可以直接訪問(wèn) ? 8個(gè)通用寄存器( R7~R0) ? 程序計(jì)數(shù)器( PC) ? 堆棧指針( SP) ? 鏈接寄存器( LR) ? 當(dāng)前程序狀態(tài)寄存器( CPSR) ? 每一種異常模式下都有一組 SP、 LR 和 SPSR 2. Thumb狀態(tài)下的寄存器組織 ARM的寄存器組織 ARM狀態(tài)寄存器組織與 Thumb狀態(tài)寄存器組織 Thumb狀態(tài)寄存器在 Arm狀態(tài)寄存器上的映射 R1 R2 R3 R4 R5 T h u m b R6 R7 ( C P S R ) ( S P S R ) R1 R2 R3 R4 R5 A R M R6 R7 R8 ( C P S R ) ( S P S R ) R9 R 1 0 R 1 1 R 1 2 R0 R0 狀態(tài) 狀態(tài) 堆棧指針 (SP) 連接寄存器 (LR) 程序計(jì)數(shù)器 (PC) 當(dāng)前程序狀態(tài)寄存器 被保存程序狀態(tài)寄存器 堆棧指針 (R13) 連接寄存器 (R14) 程序計(jì)數(shù)器 (R15) 當(dāng)前程序狀態(tài)寄存器 被保存程序狀態(tài)寄存器 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R0 堆棧指針 (R13) 連接寄存器 (R14) 程序計(jì)數(shù)器 (R15) 低寄存器 高寄存器 3.程序狀態(tài)寄存器 ( 1)程序狀態(tài)寄存器的構(gòu)成 一個(gè)當(dāng)前程序狀態(tài)寄存器( CPSR) 五個(gè)備份程序狀態(tài)寄存器( SPSR) ( 2)程序狀態(tài)寄存器的功能 ① 保存 ALU中的當(dāng)前操作信息 ② 控制允許和禁止中斷 ③ 設(shè)置處理器的工作模式 3.程序狀態(tài)寄存器 ( 3)條件碼標(biāo)志 3.程序狀態(tài)寄存器 ① N、 Z、 C、 V均為條件碼標(biāo)志位 ② 在 ARM 狀態(tài)下,絕大多數(shù)的指令都是有條件執(zhí)行的 ③ 在 Thumb狀態(tài)下,僅有分支指令 B 是有條件執(zhí)行的 實(shí)例: C代碼 if (ab) a++。 else b++。 (都是無(wú)符號(hào)數(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)用兩個(gè)補(bǔ)碼表示的帶符號(hào)數(shù)進(jìn)行運(yùn)算時(shí) ? 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)位時(shí), C=1,否則 C=0 ? 減法運(yùn)算(包括比較指令 CMP) 當(dāng)運(yùn)算結(jié)果產(chǎn)生了借位時(shí), C=1,否則 C=0 ? 包含移位操作的非加 /減運(yùn)算指令, C為移出值的最后一位 ? 對(duì)于其他的非加 /減運(yùn)算指令, C的值通常不改變 標(biāo)志位 V ? 對(duì)于加 /減法運(yùn)算指令,當(dāng)操作數(shù)和運(yùn)算結(jié)果為補(bǔ)碼表示的帶符號(hào)數(shù)時(shí), V=1表示符號(hào)位溢出 ? 對(duì)于其他的非加 /減運(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 ? 對(duì)于 ARM v5及以上的 T系列處理器,當(dāng)該位為 1時(shí),程序運(yùn)行于 Thumb狀態(tài),否則運(yùn)行于 ARM狀態(tài) ? 對(duì)于 ARM v5及以上的非 T系列處理器,當(dāng)該位為 1時(shí),執(zhí)行下一條指令以引起為定義指令異常;當(dāng)該位為 0時(shí),表示運(yùn)行于 ARM狀態(tài) 3.程序狀態(tài)寄存器 ③ 運(yùn)行模式位 M[4:0] M[4: 0] 處理器工作 模式 可訪問(wèn)的寄存器 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中沒(méi)有使用的位,當(dāng)改變 PSR匯總的條件碼標(biāo)志位或者控制位時(shí),保留為不會(huì)被改變,在程序中也不能使用保留位來(lái)存儲(chǔ)數(shù)據(jù),保留位將用于 ARM版本的擴(kuò)展。 異常 ?當(dāng)正常的程序執(zhí)行流程發(fā)生暫時(shí)的停止時(shí),稱之為異常 ?處理器允許多個(gè)異常同時(shí)發(fā)生,它們將會(huì)按 固定的優(yōu)先級(jí) 進(jìn)行處理 ? 中斷優(yōu)先級(jí) ? 中斷嵌套 ?在處理異常之前,當(dāng)前處理器的狀態(tài)必須保留,這樣當(dāng)異常處理完成之后,當(dāng)前程序可以繼續(xù)執(zhí)行 1.異常類型 異常 異常類型 具體含義 復(fù)位 當(dāng)處理器的復(fù)位電平有效時(shí),產(chǎn)生復(fù)位異常,程序跳轉(zhuǎn)到復(fù)位異常處理程序處執(zhí)行 未定義指令 當(dāng) ARM處理器或協(xié)處理器遇到不能處理的指令時(shí),產(chǎn)生未定義指令異常。 可使用該異常機(jī)制進(jìn)行軟件仿真 軟件中斷 該異常由執(zhí)行 SWI指令產(chǎn)生,可使用該異常機(jī)制實(shí)現(xiàn)系統(tǒng)功能調(diào)用,用于用戶模式下的程序調(diào)用特權(quán)操作指令。 指令預(yù)取中止 若處理器預(yù)取指令的地址不存在,或該地址不允許當(dāng)前指令訪問(wèn),存儲(chǔ)器會(huì)向處理器發(fā)出存儲(chǔ)器中止信號(hào),但當(dāng)預(yù)取的指令被執(zhí)行時(shí),才會(huì)產(chǎn)生指令預(yù)取中止異常。 數(shù)據(jù)中止 若處理器數(shù)據(jù)訪問(wèn)指令的地址不存在,或該地址不允許當(dāng)前指令訪問(wèn)時(shí),產(chǎn)生數(shù)據(jù)中止異常。 IRQ(外部中斷請(qǐng)求) 當(dāng)處理器的外部中斷請(qǐng)求引腳有效,且 CPSR中的 I位為 0時(shí),產(chǎn)生 IRQ異常。系統(tǒng)的外設(shè)可通過(guò)該異常請(qǐng)求中斷服務(wù)。 FIQ(快速中斷請(qǐng)求) 當(dāng)處理器的快速中斷請(qǐng)求引腳有效,且 CPSR中的 F位為 0時(shí),產(chǎn)生 FIQ異常。 表 35 ARM體系結(jié)構(gòu)支持的異常 異常 2.對(duì)異常的響應(yīng) ① 將下一條指令的地址存入相應(yīng)連接寄存器 LR,以便程序在處理異常返回時(shí)能從正確的位置重新開(kāi)始執(zhí)行。若異常是從 ARM狀態(tài)進(jìn)入, LR寄存器中保存的是下一條指令的地址(當(dāng)前 PC+4或 PC+ 8,與異常的類型有關(guān));若異常是從 Thumb狀態(tài)進(jìn)入,則在 LR寄存器中保存當(dāng)前 PC的偏移量。 ② 將 CPSR狀態(tài)傳送到相應(yīng)的 SPSR中。 ③ 根據(jù)異常類型,強(qiáng)制設(shè)置 CPSR的運(yùn)行模式位。 ④ 強(qiáng)制 PC從相關(guān)的異常向量地址取下一條指令執(zhí)行,跳轉(zhuǎn)到相應(yīng)的異常處理程序。 ARM處理器對(duì)異常的響應(yīng)過(guò)程用偽碼描述如下 SPSR_Exception _Mode = CPSR CPSR[4:0] = Exception Mode Number ; 設(shè)置異常模式 CPSR[5] = 0 。 切換到 ARM工作狀態(tài) If Exception_Mode == Reset or FIQ then CPSR[6] = 1 。 禁止新的 FIQ異常 CPSR[7] = 1 ;禁止新的 IRQ異常 R14_Exception_Mode = Return Link PC = Exception Vector Addres 異常 3.從異常返回 異常 ① 將連接寄存器 LR的值減去相應(yīng)的偏移量后送到 PC中。 ② 將 SPSR內(nèi)容送回 CPSR中。 ③ 若在進(jìn)入異常處理時(shí)設(shè)置了中斷禁止位,要在此清除。 4.各類異常的具體描述 異常 ( 1)復(fù)位的響應(yīng)過(guò)程 SPSR_svc = CPSR CPSR[4:0] = 0b10011 CPSR[5] = 0 ;切換到 ARM工作狀態(tài) CPSR[6] = 1 ;禁止新的 FIQ異常 CPSR[7] = 1 ;禁止新的 IRQ異常 R14_svc = Return Link PC = 0x00000000 ( 2)未定義指令異常 4.各類異常的具體描述 ① 當(dāng) ARM處理器遇到不能處理的指令時(shí),會(huì)產(chǎn)生未定義指令異常 ② 采用這種機(jī)制,可以通過(guò)軟件仿真擴(kuò)展 ARM或者 Thumb指令集 ③ 在未定義指令處理程序中執(zhí)行以下指令返回 ? MOVS PC, R14_und ? 恢復(fù) PC和 CPSR的值,并返回到未定義指令后的下一條指令 ④ 未定義指令異常的響應(yīng)過(guò)程 ( 2)未定義指令異常 4.各類異常的具體描述 SPSR_und = CPSR CPSR[4:0] = 0b11011 CPSR[5] = 0 // CPSR[6]保持不變 CPSR[7] = 1 ;禁止新的 IRQ異常 R14_und = Return Link PC = 0x00000004 ( 3)軟件中斷 4.各類異常的具體描述 ① 軟件中斷指令( SWI)用于進(jìn)入管理模式,常用于請(qǐng)求執(zhí)行特定的管理功能 ② 在軟件中斷處理程序中執(zhí)行以下指令返回 ? MOVS PC, R14_svc ? 恢復(fù) PC(從 R14_svc)和 CPSR(從 SPSR_svc)的值,并返回到 SWI的下一條指令 ③ SWI的響應(yīng)過(guò)程 : SPSR_svc = CPSR CPSR[4:0] = 0b10011 CPSR[5] = 0 ;切換到 ARM工作狀態(tài) // CPSR[6]保持不變 CPSR[7] = 1 ;禁止新的 IRQ異常 R14_svc = Return Link PC = 0x00000008 4.各類異常的具體描述 4.各類異常的具體描述 ( 4) Abort(中止)異常 ① 產(chǎn)生中止異常意味著對(duì)存儲(chǔ)器的訪問(wèn)失敗 ② 中止異常包括兩種類型 ③ 當(dāng)確定中止原因后, Abort處理程序執(zhí)行以下指令返回 ? SUBS PC,R14_abt,4 。指令預(yù)取中止 ? SUBS PC,R14_abt,8 。數(shù)據(jù)中止 ?恢復(fù) PC(從 R14_abt)和 CPSR(從 SPSR_abt)的值,并重新執(zhí)行產(chǎn)生中止的指令 ? 指令預(yù)取中止:發(fā)生在指令預(yù)取時(shí) ? 數(shù)據(jù)中止:發(fā)生在數(shù)據(jù)訪問(wèn)時(shí) 4.各類異常的具體描述 ④ 中止異常的響應(yīng)過(guò)程: 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異常屬于正常的中斷請(qǐng)求, IRQ優(yōu)先級(jí)低于 FIQ ? 若 CPSR的 I位置 1,則禁止 IQR中斷,若 C
點(diǎn)擊復(fù)制文檔內(nèi)容
試題試卷相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1