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

正文內(nèi)容

arm體系結(jié)構(gòu)清華第一章-資料下載頁(yè)

2025-05-13 03:18本頁(yè)面
  

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