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

正文內(nèi)容

armthumb微處理器結(jié)構(gòu)及指令系統(tǒng)-資料下載頁(yè)

2025-05-11 22:16本頁(yè)面
  

【正文】 Thumb狀態(tài)寄存器在 Arm狀態(tài)寄存器上的映射 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R0 堆棧指針 (R13) 連接寄存器 (R14) 程序計(jì)數(shù)器 (R15) 低寄存器 高寄存器 ? 在 Thumb狀態(tài)中訪(fǎng)問(wèn)高寄存器 在 Thumb狀態(tài)中,高寄存器( R8~ R15)不是標(biāo)準(zhǔn)寄存器集的一部分。匯編語(yǔ)言程序員對(duì)它們的訪(fǎng)問(wèn)受到限制,但可以將它們用于快速暫存。 可以使用 MOV、 CMP和 ADD指令對(duì)高寄存器操作。 寄存器組織 ?程序狀態(tài)寄存器 — CPSR(1)+SPSR(5) 寄存器組織 CPSR反映了當(dāng)前處理器的狀態(tài): ?4個(gè)條件代碼標(biāo)志; ?2個(gè)中斷控制位; ? 5個(gè)對(duì)當(dāng)前處理器模式進(jìn)行編碼的位; ?1個(gè)指示當(dāng)前執(zhí)行指令的工作狀態(tài)位; ?保留位 。 SPSR: 備份程序狀態(tài)字,保存異常事件發(fā) 生之前的 CPSR. 每個(gè)異常模式帶有一個(gè)備份程序狀態(tài)寄存器 , 用于保存在異常事件發(fā)生之前的 CPSR;CPSR和 SPSR通過(guò)特殊指令進(jìn)行訪(fǎng)問(wèn) 。 程序狀態(tài)寄存器 N Z C V — — I M0 M1 M2 M3 M4 T F — . . . 31 30 29 28 27 26 8 7 6 5 4 3 2 1 0 條件代碼標(biāo)志 保留 控制位 溢出標(biāo)志 進(jìn)位或借位擴(kuò)展 零 負(fù)或小于 IRQ禁止 FIQ禁止 狀態(tài)位 模式位 CPSR寄存器的格式 大多數(shù) “ 數(shù)值處理指令 ” 可以選擇是否影響條件代碼標(biāo)志位(指令帶 S后綴);但有些指令執(zhí)行總是影響條件代碼標(biāo)志。 所有 ARM指令都可按條件來(lái)執(zhí)行,而 Thumb指令中只有分支指令可按條件執(zhí)行。 運(yùn)算結(jié)果的最高位反映在該標(biāo)志位 。 對(duì)于有符號(hào)二進(jìn)制補(bǔ)碼 ,結(jié)果為負(fù)數(shù)時(shí) N=1, 結(jié)果為正數(shù)或零時(shí) N=0; 指令結(jié)果為 0時(shí) Z=1(表示比較結(jié)果 “ 相等 ” ),否則 Z=0; 當(dāng)進(jìn)行加法運(yùn)算 , 并且最高位產(chǎn)生進(jìn)位時(shí) C=1, 否則 C=0。 當(dāng)進(jìn)行減法運(yùn)算 , 并且最高位產(chǎn)生借位時(shí) C=0, 否則 C=1。 對(duì)于移位操作指令 , C為從最高位最后移出的值 , 其它指令 C通常不變; 當(dāng)進(jìn)行加法 /減法運(yùn)算,并且發(fā)生有符號(hào)溢出時(shí)V=1,否則 V=0,其它指令 V通常不變。 最低 8位為控制位,當(dāng)發(fā)生異常時(shí),這些位被硬件改變。當(dāng)處理器處于一個(gè)特權(quán)模式時(shí),可用軟件操作這些位。 保留位被保留將來(lái)使用。為了提高程序的可移植性,當(dāng)改變 CPSR標(biāo)志和控制位時(shí),請(qǐng)不要改變這些保留位。另外,請(qǐng)確保您程序的運(yùn)行不受保留位的值影響,因?yàn)閷?lái)的處理器可能會(huì)將這些位設(shè)置為 1或者 0。 CPSR模式位設(shè)置表 M[4:0] 模式 M[4:0] 模式 10000 用戶(hù) 10111 中止 10001 快中斷 11011 未定義 10010 中斷 11111 系統(tǒng) 10011 管理 注意 :不是所有模式位的組合都定義了有效的處理器模式 ,如果使用了錯(cuò)誤的設(shè)置 , 將引起一個(gè)無(wú)法恢復(fù)的錯(cuò)誤 。 第二章 目錄 ※ 1 ARM微處理器概述 ● ARM處理器系列 ● RISC體系結(jié)構(gòu) ● ARM和 Thumb狀態(tài) ● 寄存器 ● ARM指令集概述 ● Thumb指令集概述 ※ 2 ARM微處理器體系結(jié)構(gòu) ● 數(shù)據(jù)類(lèi)型 ● ARM微處理器的工作狀態(tài) ● ARM體系結(jié)構(gòu)的存儲(chǔ)器格式 ● 處理器模式 ● 寄存器組織 ● 異常 ※ 3 ARM/Thumb指令系統(tǒng) ● 處理器尋址方式 ● 指令集介紹 ● 指令集介紹 ? 簡(jiǎn)介 只要正常的程序流被暫時(shí)中止 , 處理器就進(jìn)入異常模式 。 例如響應(yīng)一個(gè)來(lái)自外設(shè)的中斷 。 在處理異常之前 , ARM7TDMI內(nèi)核保存當(dāng)前的處理器狀態(tài) , 這樣當(dāng)處理程序結(jié)束時(shí)可以恢復(fù)執(zhí)行原來(lái)的程序 。 如果同時(shí)發(fā)生兩個(gè)或更多異常,那么將按照固定的順序來(lái)處理異常,詳見(jiàn) “ 異常優(yōu)先級(jí) ” 部分。 異常 異常處理器模式 異常類(lèi)型 模式 正常地址 復(fù)位 管理 0x00000000 未定義指令 未定義 0x00000004 軟件中斷 ( SWI) 管理 0x00000008 預(yù)取中止 (取指令存儲(chǔ)器中止) 中止 0x0000000C 數(shù)據(jù)中止 (數(shù)據(jù)訪(fǎng)問(wèn)存儲(chǔ)器中止) 中止 0x00000010 IRQ(中斷) IRQ 0x00000018 FIQ(快速中斷) FIQ 0x0000001C ? 異常的入口和出口處理 如果異常處理程序已經(jīng)把返回地址拷貝到堆棧 ,那么可以使用一條多寄存器傳送指令來(lái)恢復(fù)用戶(hù)寄存器并實(shí)現(xiàn)返回 。 SUB LR,LR,4 。計(jì)算返回地址 STMFD SP!,{R0R3,LR} 。保存使用到的寄存器 . . . LDMFD SP!,{R0R3,PC}^ 。中斷返回 中斷處理代碼的開(kāi)始部分和退出部分 異常 如果異常處理程序已經(jīng)把返回地址拷貝到堆棧 ,那么可以使用一條多寄存器傳送指令來(lái)恢復(fù)用戶(hù)寄存器并實(shí)現(xiàn)返回 。 中斷處理代碼的開(kāi)始部分和退出部分 ? 異常的入口和出口處理 SUB LR,LR,4 。計(jì)算返回地址 STMFD SP!,{R0R3,LR} 。保存使用到的寄存器 . . . LDMFD SP!,{R0R3,PC}^ 。中斷返回 注意 :中斷返回指令的寄存器列表 ( 其中必須包括PC) 后的 “ ^”符號(hào)表示這是一條特殊形式的指令 。這條指令在從存儲(chǔ)器中裝載 PC的同時(shí) ( PC是最后恢復(fù)的 ) , CPSR也得到恢復(fù) 。 這里使用的堆棧指針SP( R13) 是屬于異常模式的寄存器 , 每個(gè)異常模式有自己的堆棧指針 。 這個(gè)堆棧指針應(yīng)必須在系統(tǒng)啟動(dòng)時(shí)初始化 。 異常 ? 進(jìn)入異常 在異常發(fā)生后 , ARM7TDMI內(nèi)核會(huì)作以下工作: LR中保存下一條指令的地址 , 當(dāng)異常入口來(lái)自: ?ARM狀態(tài) , 那么 ARM7TDMI將當(dāng)前指令地址加 4或加 8復(fù)制 ( 取決于異常的類(lèi)型 ) 到 LR中; ?為 Thumb狀態(tài) , 那么 ARM7TDMI將當(dāng)前指令地址加 4或加 8 ( 取決于異常的類(lèi)型 ) 復(fù)制到 LR中;異常處理器程序不必確定狀態(tài) 。 異常 ? 進(jìn)入異常 在異常發(fā)生后 , ARM7TDMI內(nèi)核會(huì)作以下工作: CPSR復(fù)制到適當(dāng)?shù)?SPSR中; 3. 將 CPSR模式位強(qiáng)制設(shè)置為與異常類(lèi)型相對(duì)應(yīng)的值; PC從相關(guān)的異常向量處取指 。 異常 ARM7TDMI內(nèi)核在中斷異常時(shí)置位中斷禁止標(biāo)志,這樣可以防止不受控制的異常嵌套。 注 :異??偸窃?ARM狀態(tài)中進(jìn)行處理。當(dāng)處理器處于 Thumb狀態(tài)時(shí)發(fā)生了異常,在異常向量地址裝入PC時(shí),會(huì)自動(dòng)切換到 ARM狀態(tài)。 ? 進(jìn)入異常 異常 當(dāng)異常結(jié)束時(shí),異常處理程序必須: LR中的值減去偏移量后存入 PC,偏移量根據(jù)異常的類(lèi)型而有所不同; SPSR的值復(fù)制回 CPSR; 。 注 :恢復(fù) CPSR的動(dòng)作會(huì)將 T、 F和 I位自動(dòng)恢復(fù)為異常發(fā)生前的值。 ? 退出異常 異常 程序 A IRQ服務(wù)程序 系統(tǒng)模式 IRQ模式 程序 寄存器組 圖示進(jìn)入異常過(guò)程 1. 程序在系統(tǒng)模式下運(yùn)行用戶(hù)程序,假定當(dāng)前處理器狀態(tài)為 Thumb狀態(tài)、允許 IRQ中斷; 2. 用戶(hù)程序運(yùn)行時(shí)發(fā)生IRQ中斷,硬件完成以下動(dòng)作: LR_sys SPSR_irq LR_irq LR PC CPSR SPSR SYS 1 ? 0 . . . ? ? ? ? MOD T F I . . . N Z C V ?置位 I位(禁止 IRQ中斷) ?清零 T位(進(jìn)入 ARM狀態(tài)) ?設(shè)置 MOD位,切換處理器模式至 IRQ模式 ?將下一條指令的地址存入IRQ模式的 LR寄存器 ?將 CPSR寄存器內(nèi)容存入IRQ模式的 SPSR寄存器 ?將跳轉(zhuǎn)地址存入 PC,實(shí)現(xiàn)跳轉(zhuǎn) IRQ01BackAddr JumpAddr SYS 1 ? 0 . . . ? ? ? ? “?”表示對(duì)該位不關(guān)心 在異常處理結(jié)束后,異常處理程序完成以下動(dòng)作: 程序 A IRQ服務(wù)程序 系統(tǒng)模式 IRQ模式 程序 寄存器組 圖示退出異常過(guò)程 LR_sys SPSR_irq LR_irq LR PC CPSR SPSR SYS 1 ? 0 . . . ? ? ? ? MOD T F I . . . N Z C V ?將 SPSR寄存器的值復(fù)制回CPSR寄存器; ?將 LR寄存的值減去一個(gè)常量后復(fù)制到 PC寄存器,跳轉(zhuǎn)到被中斷的用戶(hù)程序。 IRQ01BackAddr JumpAddr return SYS 1 ? 0 . . . ? ? ? ? BackAd r4 “?”表示對(duì)該位不關(guān)心 快速中斷請(qǐng)求 (FIQ)適用于對(duì)一個(gè)突發(fā)事件的快速響應(yīng),這得益于在 ARM狀態(tài)中,快中斷模式有 8個(gè)專(zhuān)用的寄存器可用來(lái)滿(mǎn)足寄存器保護(hù)的需要(這可以加速上下文切換的速度)。 不管異常入口是來(lái)自 ARM狀態(tài)還是 Thumb狀態(tài),F(xiàn)IQ處理程序都會(huì)通過(guò)執(zhí)行下面的指令從中斷返回: SUBS PC,R14_fiq,4 在一個(gè)特權(quán)模式中,可以通過(guò)置位 CPSR中的 F位來(lái)禁止 FIQ異常。 ? 快速中斷請(qǐng)求 異常 中斷請(qǐng)求( IRQ)異常是一個(gè)由 nIRQ輸入端的低電平所產(chǎn)生的正常中斷(在具體的芯片中, nIRQ由片內(nèi)外設(shè)拉低, nIRQ是內(nèi)核的一個(gè)信號(hào),對(duì)用戶(hù)不可見(jiàn))。 IRQ的優(yōu)先級(jí)低于 FIQ。對(duì)于 FIQ序列它是被屏蔽的。任何時(shí)候在一個(gè)特權(quán)模式下,都可通過(guò)置位CPSR中的 I 位來(lái)禁止 IRQ。 不管異常入口是來(lái)自 ARM狀態(tài)還是 Thumb狀態(tài),F(xiàn)IQ處理程序都會(huì)通過(guò)執(zhí)行下面的指令從中斷返回: SUBS PC,R14_fiq,4 ? 中斷請(qǐng)求 異常 中止發(fā)生在對(duì)存儲(chǔ)器的訪(fǎng)問(wèn)不能完成時(shí),中止包含兩種類(lèi)型: ?預(yù)取中止 發(fā)生在指令預(yù)取過(guò)程中 ?數(shù)據(jù)中止 發(fā)生在對(duì)數(shù)據(jù)訪(fǎng)問(wèn)時(shí) ? 中止 異常 當(dāng)發(fā)生預(yù)取中止時(shí), ARM7TDMI內(nèi)核將預(yù)取的指令標(biāo)記為無(wú)效,但在指令到達(dá)流水線(xiàn)的執(zhí)行階段時(shí)才進(jìn)入異常。如果指令在流水線(xiàn)中因?yàn)榘l(fā)生分支而沒(méi)有被執(zhí)行,中止將不會(huì)發(fā)生。 在處理中止的原因之后,不管處于哪種處理器操作狀態(tài),處理程序都會(huì)執(zhí)行下面的指令恢復(fù) PC和CPSR并重試被中止的指令: SUBS PC,R14_abt,4 ? 中止 —— 預(yù)取指中止 異常 當(dāng)發(fā)生數(shù)據(jù)中止后,根據(jù)產(chǎn)生數(shù)據(jù)中止的指令類(lèi)型作出不同的處理: ? 中止 —— 數(shù)據(jù)中止 ?數(shù)據(jù)轉(zhuǎn)移指令( LDR、 STR)回寫(xiě)到被修改的基址寄存器。中止處理程序必須注意這一點(diǎn); ?交換指令( SWP)中止好像沒(méi)有被執(zhí)行過(guò)一樣(中止必須發(fā)生在 SWP指令進(jìn)行讀訪(fǎng)問(wèn)時(shí)) ; 異常 ?塊數(shù)據(jù)轉(zhuǎn)移指令( LDM,STM)完成。 當(dāng)回寫(xiě)被設(shè)置時(shí),基址寄存器被更新。在指示出現(xiàn)中止后,ARM7TDMI內(nèi)核防止所有寄存器被覆蓋。這意味著 ARM7TDMI內(nèi)核總是會(huì)保護(hù)被中止的 LDM指令中的 R15(總是最后一個(gè)被轉(zhuǎn)移的寄存器)。 ? 中止 —— 數(shù)據(jù)中止 當(dāng)發(fā)生數(shù)據(jù)中止后,根據(jù)產(chǎn)生數(shù)據(jù)中止的指令類(lèi)型作出不同的處理: 異常 在修復(fù)產(chǎn)生中止的原因后,不管處于哪種處理器操作狀態(tài),處理程序都必須執(zhí)行下面的返回指令 : SUBS PC,R14_abt,8 ? 中止 —— 數(shù)據(jù)中止 異常 使用軟件中斷 (SWI)指令可以進(jìn)入管理模式,通常用于請(qǐng)求一個(gè)特定的管理函數(shù)。 SWI處理程序通過(guò)執(zhí)行下面的指令返回: MOVS PC,R14_svc 這個(gè)動(dòng)作恢復(fù)了 PC和 CPSR并返回到 SWI之后的指令 。
點(diǎn)擊復(fù)制文檔內(nèi)容
畢業(yè)設(shè)計(jì)相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1