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

正文內(nèi)容

arm體系結(jié)構(gòu)清華第一章(已改無錯字)

2023-06-13 03:18:58 本頁面
  

【正文】 R10_fiq R11(FP,v8) R11 R11_fiq R12(IP) R12 R12_fiq R13(SP) R13 R13_svc R13_abt R13_und R13_irq R13_fiq R14(LR) R14 R14_svc R14_abt R14_und R14_irq R14_fiq R15(PC) R15 狀態(tài)寄存器 CPSR CPSR SPSR 無 SPSR_abt SPSR_abt SPSR_und SPSR_irq SPSR_fiq 鏈接寄存器 R14( LR) R14為 鏈接寄存器 ( LR),在結(jié)構(gòu)上有兩個(gè)特殊功能: ?在每種模式下,模式自身的 R14版本用于保存子程序返回地址; ?當(dāng)發(fā)生異常時(shí),將 R14對應(yīng)的異常模式版本設(shè)置為異常返回地址。 45 Lable 程序 A 程序 B R14 R14( LR)寄存器與子程序調(diào)用 BL Lable 地址 A ??? MOV PC,LR R14(地址 A) Lable 。 A執(zhí)行過程中調(diào)用程序 B; 操作流程 Lable,執(zhí)行程序 B。同時(shí)硬件將 “ BL Lable”指令的下一條指令所在地址存入 R14( LR); B執(zhí)行最后,將 R14寄存器的內(nèi)容放入 PC,返回程序 A; 46 R14寄存器與異常發(fā)生 異常發(fā)生時(shí),程序要跳轉(zhuǎn)至異常服務(wù)程序,對返回地址的處理與子程序調(diào)用類似,都是由硬件完成的。 47 R14寄存器注意要點(diǎn) 當(dāng)發(fā)生異常嵌套時(shí),這些異常之間可能會發(fā)生沖突。 例如:如果用戶在用戶模式下執(zhí)行程序時(shí)發(fā)生了IRQ中斷,用戶模式寄存器不會被破壞。但是如果允許在 IRQ模式下的中斷處理程序重新使能 IRQ中斷,并且發(fā)生了嵌套的 IRQ中斷時(shí),外部中斷處理程序保存在 R14_irq中的任何值都將被嵌套中斷的返回地址所覆蓋。 48 R14寄存器注意要點(diǎn) R14 R14_irq 用戶模式下的程序 IRQ模式下的程序 A a return B ... X A 地址 A 下的程序; IRQ中斷,硬件將某個(gè)地址存入 IRQ模式下的 R14_irq寄存器, 用戶模式下的 R14沒有被破壞 ; 3. IRQ服務(wù)程序 A執(zhí)行完畢,將 R14_irq寄存器的內(nèi)容存入PC,返回之前被中斷的程序; 未被破壞 R14_irq 地址 A 49 R14寄存器注意要點(diǎn) R14 R14_irq 用戶模式下的程序 IRQ模式下的程序 A a B ... X A 地址 A 地址 A 下的程序; IRQ中斷,硬件將某個(gè)地址存入 IRQ模式下的 R14_irq寄存器, 用戶模式下的 R14沒有被破壞 ; 3. IRQ服務(wù)程序 A執(zhí)行完畢,將 R14_irq寄存器的內(nèi)容減去某個(gè)常量后存入 PC,返回之前被中斷的程序; 未被破壞 IRQ模式下的程序 B a return B ... X A 地址 B 地址 B4. 如果在 IRQ處理程序中打開 IRQ中斷,并且再次發(fā)生 IRQ中斷; 5. 硬件將返回地址保存在R14_irq寄存器中, 原來保存的返回地址將被覆蓋,造成錯誤 ; R14_irq 被破壞 6. 在程序 B返回到程序 A,然后在返回到用戶模式下被中斷的程序時(shí),發(fā)生錯誤,將不能正確返回; return 解決辦法是確保 R14的對應(yīng)版本在發(fā)生中斷嵌套時(shí)不再保存任何有意義的值(將 R14入棧),或者切換到其它處理器模式下。 50 寄存器類別 寄存器在匯編中的名稱 各模式下實(shí)際訪問的寄存器 用戶 系統(tǒng) 管理 中止 未定義 中斷 快中斷 通用寄存器和程序計(jì)數(shù)器 R0(a1) R0 R1(a2) R1 R2(a3) R2 R3(a4) R3 R4(v1) R4 R5(v2) R5 R6(v3) R6 R7(v4) R7 R8(v5) R8 R8_fiq R9(SB,v6) R9 R9_fiq R10(SL,v7) R10 R10_fiq R11(FP,v8) R11 R11_fiq R12(IP) R12 R12_fiq R13(SP) R13 R13_svc R13_abt R13_und R13_irq R13_fiq R14(LR) R14 R14_svc R14_abt R14_und R14_irq R14_fiq R15(PC) R15 狀態(tài)寄存器 CPSR CPSR SPSR 無 SPSR_abt SPSR_abt SPSR_und SPSR_irq SPSR_fiq 寄存器 R15為 程序計(jì)數(shù)器 ( PC),它指向正在取指的地址??梢哉J(rèn)為它是一個(gè)通用寄存器,但是對于它的使用有許多與指令相關(guān)的限制或特殊情況。如果 R15使用的方式超出了這些限制,那么結(jié)果將是不可預(yù)測的。 51 寄存器類別 寄存器在匯編中的名稱 各模式下實(shí)際訪問的寄存器 用戶 系統(tǒng) 管理 中止 未定義 中斷 快中斷 通用寄存器和程序計(jì)數(shù)器 R0(a1) R0 R1(a2) R1 R2(a3) R2 R3(a4) R3 R4(v1) R4 R5(v2) R5 R6(v3) R6 R7(v4) R7 R8(v5) R8 R8_fiq R9(SB,v6) R9 R9_fiq R10(SL,v7) R10 R10_fiq R11(FP,v8) R11 R11_fiq R12(IP) R12 R12_fiq R13(SP) R13 R13_svc R13_abt R13_und R13_irq R13_fiq R14(LR) R14 R14_svc R14_abt R14_und R14_irq R14_fiq R15(PC) R15 狀態(tài)寄存器 CPSR CPSR SPSR 無 SPSR_abt SPSR_abt SPSR_und SPSR_irq SPSR_fiq 寄存器 CPSR為 程序狀態(tài)寄存器 ,在異常模式中,另外一個(gè)寄存器 “ 程序狀態(tài)保存寄存器( SPSR) ” 可以被訪問。每種異常都有自己的 SPSR,在進(jìn)入異常時(shí)它保存 CPSR的當(dāng)前值,異常退出時(shí)可通過它恢復(fù) CPSR。 52 通用寄存器 通用寄存器可以分為下面 3類: 未備份寄存器 (The unbanked registers),包括 R0~ R7。 備份寄存器 (The banked registers),包括 R8~ R14。 程序計(jì)數(shù)器 PC,即 R15。 對于備份寄存器 R8~ R12來說,每個(gè)寄存器對應(yīng)兩個(gè)不同的物理寄存器。 對于備份寄存器 R13和 R14來說,每個(gè)寄存器對應(yīng) 6個(gè)不同的物理寄存器, 采用下面的記號來區(qū)分各個(gè)物理寄存器: Rn_mode (其中, mode可以是下面幾種模式之一: usr、sys、 svc、 abt、 und、 irq及 fiq。 ) R13 寄存器 R13在 ARM中常用作棧指針。在 ARM指令集中,這只是一種習(xí)慣的用法,并沒有任何指令強(qiáng)制性的使用 R13作為棧指針,用戶也可以使用其他的寄存器作為棧指針;而在 Thumb指令集中,有一些指令強(qiáng)制性地使用 R13作為棧指針。 每一種異常模式擁有自己的物理的 R13。應(yīng)用程序初始化該 R13,使其指向該異常模式專用的棧地址。當(dāng)進(jìn)入異常模式時(shí),可以將需要使用的寄存器保存在R13所指的棧中;當(dāng)退出異常處理程序時(shí),將保存在R13所指的棧中的寄存器值彈出。這樣就使異常處理程序不會破壞被其中斷程序的運(yùn)行現(xiàn)場。 R14 寄存器 R14又被稱為連接寄存器 (Link Register, LR),在 ARM體系中具有下面兩種特殊的作用: 每一種處理器模式自己的物理 R14中存放在當(dāng)前子程序的返回地址。當(dāng)通過 BL或 BLX指令調(diào)用子程序時(shí), R14被設(shè)置成該子程序的返回地址。在子程序中,當(dāng)把 R14的值復(fù)制到程序計(jì)數(shù)器 PC中時(shí),子程序即返回??梢酝ㄟ^下面兩種方式實(shí)現(xiàn)這種子程序的返回操作。 當(dāng)異常中斷發(fā)生時(shí),該異常模式特定的物理 R14被設(shè)置成該異常模式將要返回的地址,對于有些異常模式, R14的值可能與將返回的地址有一個(gè)常數(shù)的偏移量。 R14寄存器也可以作為通用寄存器使用。 R15 程序計(jì)數(shù)器 R15又被記作 PC。當(dāng)成功地向 R15中寫入一個(gè)地址數(shù)值時(shí),程序?qū)⑻D(zhuǎn)到該地址執(zhí)行。 由于 ARM采用了流水線機(jī)制,當(dāng)正確讀取了PC的值時(shí),該值為當(dāng)前指令地址值加 8個(gè)字節(jié)。也就是說,對于 ARM指令集來說, PC指向當(dāng)前指令的下兩條指令的地址。 由于 ARM指令是字對齊的, PC值的第 0位和第1位總為 0。 R15 指令 MOV PC, PC 將程序跳轉(zhuǎn)到當(dāng)前指令下面第 2條指令處執(zhí)行。 因?yàn)橹噶钪?,?2個(gè) PC寄存器讀出的值為當(dāng)前指令的地址值加 8,這樣對 ARM指令而言寫入 PC寄存器的是當(dāng)前指令下面第 2條指令的地址。 類似的指令還有 ADD PC, PC, 0。 58 程序狀態(tài)寄存器 CPSR(當(dāng)前程序狀態(tài)寄存器 )可以在任何處理器模式下被訪問。它包含了條件標(biāo)志位、中斷禁止位、當(dāng)前處理器模式標(biāo)志以及其他的一些控制和狀態(tài)位。 每一種處理器模式下都有一個(gè)專用的物理狀態(tài)寄存器,稱為 SPSR(備份程序狀態(tài)寄存器 )。當(dāng)特定的異常中斷發(fā)生時(shí),這個(gè)寄存器用于存放當(dāng)前程序狀態(tài)寄存器的內(nèi)容。在異常中斷程序退出時(shí),可以用 SPSR中保存的值來恢復(fù) CPSR。 CPSR的格式如下所示。 SPSR格式與 CPSR格式相同。 1. 條件標(biāo)志位 2. Q標(biāo)志位 3. CPSR中的控制位 4. CPSR中的其他位 1. 條件標(biāo)志位 N (Negative)、 Z (Zero)、 C (Carry) 及 V (oVerflow)統(tǒng)稱為條件標(biāo)志位。大部分的 ARM指令可以根據(jù)CPSR中的這些條件標(biāo)志位來選擇性地執(zhí)行。 通常如果指令帶 S后綴,則該指令的執(zhí)行會影響條件代碼標(biāo)志;但有一些指令的執(zhí)行總是會影響條件代碼標(biāo)志。 各標(biāo)志位的含義如下: N 運(yùn)算結(jié)果的最高位反映在該標(biāo)志位。對于有符號二進(jìn)制補(bǔ)碼,結(jié)果為負(fù)數(shù)時(shí) N=1,結(jié)果為正數(shù)或零時(shí) N=0; Z 指令結(jié)果為 0時(shí) Z=1,否則 Z=0;對于 CMP指令, Z=1表示進(jìn)行比較的兩個(gè)數(shù)大小相等 C 當(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。對于結(jié)合移位操作的非加法 /減法指令, C為從最高位最后移出的值,其它指令C通常不變; V 當(dāng)進(jìn)行加法 /減法運(yùn)算,并且發(fā)生有符號溢出時(shí)V=1,否則 V=0,其它指令 V通常不變。 2. Q標(biāo)志位 在 ARM v5的 E系列處理器中, CPSR的 bit[27]稱為Q標(biāo)志位,主要用于指示增強(qiáng)的 DSP指令是否發(fā)生了溢出。 在 ARM v5以前的版本及 ARM v5的非 E系列的處理器中, Q標(biāo)志位沒有被定義
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1