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

正文內容

arm體系結構清華第一章-資料下載頁

2025-05-13 03:18本頁面
  

【正文】 。 CPSR的 bit[27]屬于DNM(RAZ)。 3. CPSR中的控制位 CPSR的低 8位 I、 F、 T及 M[4∶ 0]統(tǒng)稱為控制位。當異常中斷發(fā)生時這些位發(fā)生變化。在特權級的處理器模式下,軟件可以修改這些控制位。 中斷禁止位 當 I=1時禁止 IRQ中斷。 當 F=1時禁止 FIQ中斷。 T控制位 T控制位用于控制指令執(zhí)行的狀態(tài) 對于 ARM v3以及更低的版本和 ARM v4的非 T系列版本的處理器,沒有 ARM狀態(tài)和 Thumb狀態(tài)切換, T控制位應為 0。 對于 ARM v4以及更高的版本的 T系列的 ARM處理器, T控制位含義如下: T=0表示執(zhí)行 ARM指令。 T=1表示執(zhí)行 Thumb指令。 M控制位 控制位 M[4∶ 0]控制處理器模式 不是所有模式位的組合都定義了有效的處理器模式,如果使用了錯誤的設置,將引起一個無法恢復的錯誤。 4. CPSR中的其他位 CPSR中的其他位用于將來 ARM 版本的擴展。應用軟件不要操作這些位,以免與 ARM將來版本的擴展沖突。 68 ARM體系的異常中斷 只要正常的程序流被暫時中止,處理器就進入異常模式。 例如響應一個來自外設的中斷。在處理異常之前, ARM內核保存當前的處理器狀態(tài)( CPSRSPSR,壓棧用到的寄存器),這樣當處理程序結束時可以恢復執(zhí)行原來的程序( SPSRCPSR,恢復之前使用過的寄存器)。 如果同時發(fā)生兩個或更多異常,那么將按照固定的順序來處理異常,如:“異常優(yōu)先級”。 69 在 ARM體系中通常有以下 3種方式控制程序的執(zhí)行流程: 在正常程序執(zhí)行過程中,每執(zhí)行一條 ARM指令,程序計數器寄存器 (PC)的值加 4個字節(jié);每執(zhí)行一條 Thumb指令,程序計數器寄存器 (PC)的值加兩個字節(jié)。整個過程是按順序執(zhí)行。 通過跳轉指令,程序可以跳轉到特定的地址標號處執(zhí)行,或者跳轉到特定的子程序處執(zhí)行。 當異常中斷發(fā)生時,系統(tǒng)執(zhí)行完當前指令后,將跳轉到相應的異常中斷處理程序處執(zhí)行。 70 ARM中異常中斷種類 ARM體系中的異常中斷如表 。 異常中斷名稱 含 義 復位 (Reset) 當處理器的復位引腳有效時,系統(tǒng)產生復位異常中斷,程序跳轉到復位異常中斷處理程序處執(zhí)行。復位異常中斷通常用在下面幾種情況下: 系統(tǒng)加電時 系統(tǒng)復位時 跳轉到復位中斷向量處執(zhí)行,稱為軟復位 未定義的指令 (undefined instruction) 當 ARM處理器或者是系統(tǒng)中的協(xié)處理器認為當前指令未定義時,產生未定義的指令異常中斷。 軟件中斷 (software interrupt SWI) 這是一個由用戶定義的中斷指令。可用于用戶模式下的程序調用特權操作指令。在實時操作系統(tǒng) (RTOS)中可以通過該機制實現系統(tǒng)功能調用 指令預取中止 (Prefech Abort) 如果處理器預取的指令的地址不存在,或者該地址不允許當前指令訪問,當該被預取的指令執(zhí)行時,處理器產生指令預取中止異常中斷 數據訪問中止 (Data Abort) 如果數據訪問指令的目標地址不存在,或者該地址不允許當前指令訪問,處理器產生數據訪問中止異常中斷 外部中斷請求 (IRQ) 當處理器的外部中斷請求引腳有效,而且 CPSR寄存器的 I控制位被清除時,處理器產生外部中斷請求 (IRQ)異常中斷。系統(tǒng)中各外設通常通過該異常中斷請求處理器服務 快速中斷請求 (FIQ) 當處理器的外部快速中斷請求引腳有效,而且 CPSR寄存器的 F控制位被清除時,處理器產生外部中斷請求 (FIQ)異常中斷 71 ARM處理器對異常中斷的響應過程 ARM處理器對異常中斷的響應過程如下所述。 保存處理器狀態(tài)、中斷屏蔽位以及各條件標志位到相應異常對應的 SPSR_mode中。 設置當前程序狀態(tài)寄存器 CPSR中相應的位( M位、 I、 F等)。 將寄存器 lr_mode設置成返回地址。 將程序計數器值 (PC),設置成該異常中斷的中斷向量地址,從而跳轉到相應的異常中斷處理程序處執(zhí)行。 72 從異常中斷處理程序中返回 從異常中斷處理程序中返回包括以下兩個基本操作: 恢復被中斷的程序的處理器狀態(tài),即將SPSR_mode寄存器內容復制到 CPSR中。 返回到發(fā)生異常中斷的指令的下一條指令處執(zhí)行,即將 lr_mode寄存器的內容復制到程序計數器 PC中。 復位異常中斷處理程序不需要返回。在復位異常中斷處理程序開始整個用戶程序的執(zhí)行,因而它不需要返回。 注意 : ARM內核在中斷異常時置位中斷禁止標志,這樣可以防止不受控制的異常嵌套。 異??偸窃?ARM狀態(tài)中進行處理。當處理器處于Thumb狀態(tài)時發(fā)生了異常,在異常向量地址裝入PC時,會自動切換到 ARM狀態(tài)。 程序 A IRQ服務程序 系統(tǒng)模式 IRQ模式 程序 寄存器組 圖示進入異常過程 1. 程序在系統(tǒng)模式下運行用戶程序,假定當前處理器狀態(tài)為 Thumb狀態(tài)、允許 IRQ中斷; 2. 用戶程序運行時發(fā)生IRQ中斷,硬件完成以下動作: LR_sys SPSR_irq LR_irq LR PC CPSR SPSR SYS 1 ? 0 . . . ? ? ? ? MOD T F I . . . N Z C V ?置位 I位(禁止 IRQ中斷) ?清零 T位(進入 ARM狀態(tài)) ?設置 MOD位,切換處理器模式至 IRQ模式 ?將下一條指令的地址存入IRQ模式的 LR寄存器 ?將 CPSR寄存器內容存入IRQ模式的 SPSR寄存器 ?將跳轉地址存入 PC,實現跳轉 IRQ01BackAddr JumpAddr SYS 1 ? 0 . . . ? ? ? ? “ ?”表示對該位不關心 在異常處理結束后,異常處理程序完成以下動作: 程序 A IRQ服務程序 系統(tǒng)模式 IRQ模式 程序 寄存器組 圖示退出異常過程 LR_sys SPSR_irq LR_irq LR PC CPSR SPSR SYS 1 ? 0 . . . ? ? ? ? MOD T F I . . . N Z C V ?將 SPSR寄存器的值復制回CPSR寄存器; ?將 LR寄存的值復制到 PC寄存器,跳轉到被中斷的用戶程序。 IRQ01BackAddr JumpAddr return SYS 1 ? 0 . . . ? ? ? ? BackAddr4 “ ?”表示對該位不關心 76 ARM體系中存儲系統(tǒng) 關于 ARM體系的存儲系統(tǒng)在第 5章有詳細的介紹。這里僅僅介紹 ARM編程模型中與存儲系統(tǒng)相關的一些概念。 體系結構直接支持的數據類型 體系結構直接支持的數據類型 ARM處理器支持下列數據類型: ?字節(jié) 8位 ?半字 16位(必須分配為占用兩個字節(jié)) ?字 32位(必須分配為占用 4各字節(jié)) 1 1 1 2 3 4 2 78 ARM體系中的存儲空間 ARM體系使用單一的平板地址空間。該地址空間的大小為 232個 8位字節(jié)。這些字節(jié)單元的地址是一個無符號的 32位數值,其取值范圍為 0到 2321。 ARM的地址空間也可以看作是 230個 32位的字單元。這些字單元的地址可以被 4整除,也就是說該地址的低兩位為 0b00。地址為 A的字數據包括地址為 A、A+ A+ A+3 4個字節(jié)單元的內容。 在 ARM版本 4及以上的版本中, ARM的地址空間也可以看作是 231個 16位的半字單元。這些半字單元的地址可以被 2整除,也就是說該地址的最低位為 0b0。地址為 A的半字數據包括地址為 A、 A+1兩個字節(jié)單元的內容。 79 ARM存儲器格式 在 ARM體系中,每個字單元中包含 4個字節(jié)單元或者兩個半字單元; 1個半字單元中包含兩個字節(jié)單元。但是在字單元中, 4個字節(jié)哪一個是高位字節(jié),哪一個是低位字節(jié)則有兩種不同的格式: bigendian格式和 littleendian格式。 在 bigendian格式中,存儲器格式如圖 。 31 24 2 3 16 1 5 8 7 0 字單元 A 半字單元 A 半字單元 A + 2 字節(jié)單元 A 字節(jié)單元 A + 1 字節(jié)單元 A + 2 字節(jié)單元 A + 3 80 ARM存儲器格式 在 littleendian格式中,存儲器格式如圖 示。 31 24 23 16 15 8 7 0 字單元 A 半字單元 A + 2 半字單元 A 字節(jié)單元 A + 3 字節(jié)單元 A + 2 字節(jié)單元 A + 1 字節(jié)單元 A 存儲器系統(tǒng)有兩種映射機制: ?小端存儲器系統(tǒng): 在小端格式中 , 高字節(jié)存放在高地址中 , 低字節(jié)存放在低地址中 。 ?大端存儲器系統(tǒng): 在大端格式中 , 低字節(jié)存放在高地址中 , 高字節(jié)存放在低地址中 。 思考: 0x12345678字數據的大小端存儲方式 0x12345678字數據的大小端存儲方式 0x12 高位地址 低位地址 0x34 0x56 0x78 大端模式 0x78 高位地址 低位地址 0x56 0x34 0x12 小端模式 82 非對齊的存儲訪問操作 在 ARM中,通常希望字單元的地址是字對齊的(地址的低兩位為 0b00),半字單元的地址是半字對齊的 (地址的最低位為 0b0)。在存儲訪問操作中,如果存儲單元的地址沒有遵守上述的對齊規(guī)則,則稱為非對齊 (unaligned)的存儲訪問操作。 1. 非對齊的指令預取操作 2. 非對齊的數據訪問操作 1. 非對齊的指令預取操作 ARM狀態(tài)下,寫入 PC中的值非字對齊的 (低兩位不為 0b00); Thumb狀態(tài)下,寫入 PC中的值是非半字對齊的 (最低位不為 0b0),則要么指令執(zhí)行的結果不可預知,要么地址值中最低位被忽略。 2. 非對齊的數據訪問操作 對于 Load/Store操作,如果是非對齊的數據訪問操作,系統(tǒng)定義了下面 3種可能的結果。 執(zhí)行的結果不可預知。 忽略字單元地址的低兩位的值 ,即訪問地址為 (address AND 0XFFFFFFC)的字單元;忽略半字單元地址的最低位的值,即訪問地址為 (address AND 0XFFFFFFE)的半字單元。 由存儲系統(tǒng)實現這種“忽略”。也就是說,這時該地址值原封不動地送到存儲系統(tǒng)。 84 指令預取和自修改代碼 在 ARM中允許指令預取。在 CPU執(zhí)行當前指令的同時,可以從存儲器中預取其后若干條指令,具體預取多少條指令,不同的 ARM實現中有不同的數值。 預取的指令并不一定能夠得到執(zhí)行。 自修改代碼指的是代碼在執(zhí)行過程中可能修改自身。對于支持指令預取的 ARM系統(tǒng),自修改代碼可能帶來潛在的問題。當指令被預取后,在該指令被執(zhí)行前,如果有數據訪問指令修改了位于主存中的該指令,這時被預取的指令和主存中對應的指令不同,從而可能使執(zhí)行的結果發(fā)生錯誤。
點擊復制文檔內容
教學課件相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1