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

正文內(nèi)容

arm體系結(jié)構(gòu)與編程---第一章(參考版)

2025-05-15 13:53本頁(yè)面
  

【正文】 ? 當(dāng)發(fā)生數(shù)據(jù)訪問(wèn)異常時(shí), ARM處理器在處理異常之前使用哪個(gè)寄存器保存 CPSR? 。 練習(xí) ? 分別列舉 ARM的處理器模式。 協(xié)議轉(zhuǎn)換器: 將調(diào)試主機(jī)發(fā)出的高級(jí)命令轉(zhuǎn)換到處理器 JTAG接口的低級(jí)命令。 ARM存儲(chǔ)器系統(tǒng) ARM處理器的高級(jí)調(diào)試特性使應(yīng)用程序 、 操作系統(tǒng)和硬件的開(kāi)發(fā)變得更加容易 。 ?如果 ARM處理器或存儲(chǔ)器系統(tǒng)允許對(duì)預(yù)取指令進(jìn)行備份 , 并使用這些備份而不是重新預(yù)取 , 那么以后執(zhí)行這段代碼 , 仍將執(zhí)行 “ SUB”指令 。 在存儲(chǔ)器中的指令可能在它被預(yù)取之后 , 被執(zhí)行之前 , 如果有數(shù)據(jù)訪問(wèn)指令修改了位于主存中的該指令 , 這時(shí)被預(yù)取的指令和主存中對(duì)應(yīng)的指令不同 。 指令的預(yù)取 并不是實(shí)際執(zhí)行指令 。 ARM存儲(chǔ)器系統(tǒng) 在前面指令的執(zhí)行尚未完成時(shí)將指令從存儲(chǔ)器中取出 。讓存儲(chǔ)系統(tǒng)自己處理最低兩位。不同的指令版本,處理不同。 不按這種方式對(duì)齊的存儲(chǔ)器訪問(wèn)稱為 非對(duì)齊的存儲(chǔ)器訪問(wèn) 。 0 31 0 31 低地址 高地址 低地址 高地址 (8H)=0x0B0A0908 (4H)=0x07060504 (0H)=0x03020220 存儲(chǔ)器及存儲(chǔ)器映射 I/O ? 存儲(chǔ)器格式 地址空間的規(guī)則: ?位于地址 A的 字 包含的字節(jié)位于地址 A,A+1,A+2和 A+3; ?位于地址 A的 半字 包含的字節(jié)位于地址 A和 A+1; ?位于地址 A+2的 半字 包含的字節(jié)位于地址 A+2和 A+3; ?位于地址 A的 字 包含的半字位于地址 A和 A+2; 字節(jié) 字節(jié) 字節(jié) 字節(jié) 地址 A A+1 A+2 A+3 半字 半字 字 ARM體系結(jié)構(gòu)的存儲(chǔ)器格式( 3) r0 = 0x11223344 STR r0, [r1] LDRB r2, [r1] r1 = 0x100 為地址 Memory 3 2 1 0 0 1 2 3 Byte Lane 31 24 23 16 15 8 7 0 11 22 33 44 31 24 23 16 15 8 7 0 44 33 22 11 31 24 23 16 15 8 7 0 11 22 33 44 31 24 23 16 15 8 7 0 00 00 00 44 31 24 23 16 15 8 7 0 00 00 00 11 Little endian Big endian r2 = 0x44 r2 = 0x11 存儲(chǔ)字?jǐn)?shù)據(jù) 加載字節(jié)數(shù)據(jù) r1=0x100 r1=0x100 ARM結(jié)構(gòu)通常 希望 所有的存儲(chǔ)器訪問(wèn) 都合理的對(duì)齊 。 ARM缺省設(shè)置是小端格式 (設(shè)置 cp15中的 c1 bit [7]可選擇) 體系結(jié)構(gòu)直接支持的數(shù)據(jù)類型 ARM體系結(jié)構(gòu)的存儲(chǔ)器格式( 2) (8H)=0x0B0A0908 (4H)=0x07060504 (0H)=0x03020220 Big Endian Little Endian 0H 1H 2H 3H 0H 1H 2H 3H 字?jǐn)?shù)據(jù)的高字節(jié)存儲(chǔ)在低地址中,字?jǐn)?shù)據(jù)的低字節(jié)存儲(chǔ)在高地址中。 第一章 目錄 ? ? ?I/O ? ? ? ? ? ? ? ? ? ?6. 程序狀態(tài)寄存器 ?數(shù)據(jù)類型 ARM體系中存儲(chǔ)系統(tǒng) ARM地址空間的大小為 4GB ARM處理器支持下列數(shù)據(jù)類型: ?字節(jié) (Byte) 8位 ?半字 (HalfWord) 16位 =2個(gè)字節(jié) ?字 (Word) 32位 =4個(gè)字節(jié) 一條 ARM指令是( 32位、 4個(gè)字節(jié)、 1個(gè)字) ?ARM體系結(jié)構(gòu)的存儲(chǔ)器格式( 1) ?大端格式( Big Endian) 字?jǐn)?shù)據(jù)的 高字節(jié) 存儲(chǔ)在 低地址 中,而字?jǐn)?shù)據(jù)的 低字節(jié)則存放在 高地址 中。為了提高程序的可移植性, 不要修改這些保留位。 注意 :如果通過(guò)程序修改 CPSR寄存器中的模式位 bit[4:0]進(jìn)入異常模式,那么硬件將不會(huì)把 CPSR保存至 SPSR中,而通過(guò)異常發(fā)生進(jìn)入時(shí)硬件會(huì)自動(dòng)將 CPSR放入 SPSR。 M[4:0] 模式 0b10000 用戶 0b10001 FIQ 0b10010 IRQ 0b10011 管理 0b10111 中止 0b11011 未定義 0b11111 系統(tǒng) 程序狀態(tài)寄存器 ? 簡(jiǎn)介 每個(gè)異常模式還帶有一個(gè)程序狀態(tài)保存寄存器 ( SPSR),它用于 保存 在異常事件發(fā)生之前的 CPSR。 ? V4以及更高版本的 T系列 T位反映了正在操作的狀態(tài): ? 當(dāng) T位清零時(shí),處理器正在 ARM狀態(tài)下運(yùn)行; ? 當(dāng) T位置位時(shí),處理器正在 Thumb狀態(tài)下運(yùn)行 ? V5以及更高的版本非 T系列, T控制位含義如下: ? 當(dāng) T位清零時(shí),表示執(zhí)行 ARM指令; ? 譯碼階段發(fā)現(xiàn), T位置位時(shí),表示強(qiáng)制下一條執(zhí)行的指令產(chǎn)生未定義指令中斷。若 R0R1, 則 R0=R0+1 ADDLS R1,R1,1 。 對(duì)應(yīng)的匯編代碼: CMP R0,R1 。 程序狀態(tài)寄存器 ? ARM指令集 ——條件碼 C代碼: If(a b) a++。當(dāng)進(jìn)行 減 法運(yùn)算并且最高位產(chǎn)生借位時(shí) C=0,否則 C=1。 N Z C V Q — I M0 M1 M2 M3 M4 T F — . . . 31 30 29 28 27 26 8 7 6 5 4 3 2 1 0 程序狀態(tài)寄存器 ? 簡(jiǎn)介 條件代碼標(biāo)志 保留 控制位 溢出標(biāo)志 進(jìn)位或借位擴(kuò)展 零 符號(hào)標(biāo)志位 IRQ禁止 FIQ禁止 狀態(tài)位 模式位 CPSR寄存器的格式 程序狀態(tài)寄存器 ? 條件代碼標(biāo)志 各標(biāo)志位的含義如下: ? N( Negative) 正、負(fù)標(biāo)志, 運(yùn)算結(jié)果 的最高位 bit[31]反映在該標(biāo)志位。 程序狀態(tài)寄存器 ? 簡(jiǎn)介 ARM內(nèi)核包含 1個(gè) CPSR和 5個(gè)供異常處理程序使用的SPSR。 可以使用 CP15 寄存器 c1 中的 A 位控制加載和存儲(chǔ)指令的對(duì)齊要求。 字對(duì)齊 半字對(duì)齊 83 不同指令版本的對(duì)齊處理 ? 在 ARMv4 和 ARMv7 中, ARM 體系結(jié)構(gòu)所支持的數(shù)據(jù)對(duì)齊行為有明顯不同。 0xffff0000 0xffff0002 0xffff0004 0xffff0006 0xffff0008 地址 所列的地址是半字地址、字節(jié)地址。具體的規(guī)則取決于內(nèi)核結(jié)構(gòu)的版本: ?在 ARM結(jié)構(gòu) V3版及以下版本中,寫(xiě)入 R15的值的最低兩位被忽略,跳轉(zhuǎn)地址由指令的實(shí)際目標(biāo)地址(寫(xiě)入 R15的值)和 0xFFFFFFFC相 與 得到; ?在 ARM結(jié)構(gòu) V4版及以上版本中,寫(xiě)入 R15的值的最低兩位為 0,如果不是,結(jié)果將不可預(yù)測(cè),發(fā)生指令預(yù)取中止中斷。此處可能不同。把 STR指令地址 +偏移量的值放入 R0 SUB R0,R0,R1 。將 STR指令 ( 當(dāng)前指令 ) 地址 +偏移量 (8 。 SUB R1,PC,4 。偏移量是 8還是 12取決于具體的 ARM芯片,但是對(duì)于一個(gè)確定的芯片,這個(gè)值是一個(gè)常量。指令 1 YY YY,Y 。如果是一條普通指令,就會(huì)順序執(zhí)指令 1。直接取后面指令 譯碼、執(zhí)行。跳轉(zhuǎn)到 LR指向的位置 78 ARM中有兩種跳轉(zhuǎn)方式:使用跳轉(zhuǎn)指令;直接向 當(dāng)向 PC中 寫(xiě) 入一個(gè)地址值時(shí),程序?qū)⑻D(zhuǎn)到該地址 執(zhí)行,(馬上進(jìn)入預(yù)取,譯碼,執(zhí)行) 。 LDR PC,=START 。所以建議不要把 PC、 LR、 SP 用作一般的通用寄存器。 它可作為通用寄存器使用,但對(duì)于它的使用有許多限制或特殊情況。 內(nèi)部寄存器 ? R14寄存器注意要點(diǎn) R14 R14_irq 用戶模式下的程序 IRQ的程序 A a return B ... X A 返回用戶模式地址 下的程序; IRQ中斷,硬件將 返回地址 存入 IRQ模式下的 R14_irq寄存器, 用戶模式下的 R14沒(méi)有被破壞 ; 3. IRQ服務(wù)程序 A執(zhí)行完畢,將返回之前被中斷的程序; 未被使用 內(nèi)部寄存器 ? R14寄存器注意要點(diǎn) R14 R14_irq 用戶模式下的程序 第一次 IRQ的程序 A a B ... X A 返回用戶模式地 址 下的程序; IRQ中斷,硬件將某個(gè)地址存入 IRQ模式下的 R14_irq寄存器, 用戶模式下的 R14沒(méi)有被破壞 ; 3. IRQ服務(wù)程序 A執(zhí)行完畢,將 R14_irq寄存器的內(nèi)容減去某個(gè)常量后存入 PC,返回之前被中斷的程序; 未被使用 第二次 IRQ程序 B a return B ... X A 返回到第一次 IRQ 4. 如果在 第一次 IRQ處理程序中,再次發(fā)生第二次 IRQ中斷(或調(diào)用子程序); 5. 硬件將返回第一次 irq的地址 保存在R14_irq寄存器中, 原來(lái)保存的返回 用戶模式的地址 將被覆蓋 ; 被破壞 6. 這樣,在程序 B返回到程序A,程序 A將不能正確返回到用戶模式 return 解決辦法:在允許第二次 irq中斷 (子程序調(diào)用 )之前 ,將 R14_irq保存到某個(gè)寄存器或堆棧 (如 R1,保存 返回用戶模式的地址 ),然后再開(kāi)中斷。 Lable 程序 A 程序 B R14 內(nèi)部寄存器 ? R14寄存器與子程序調(diào)用 BL Lable 地址 A ??? MOV PC,R14 R14地址 A ??? A執(zhí)行到 BL Lable語(yǔ)句時(shí), 將調(diào)用程序 B; 操作流程 Lable,執(zhí)行程序 B。 ?應(yīng)先 初始化好各模式的 R13_ mode,以便異常發(fā)生時(shí),供各模式使用。但是在Thumb指令集中存在指令強(qiáng)制地使用 R13作為堆棧指針。 R14_abt R13_abt 寄存器類別 寄存器在匯編中的名稱 各模式下實(shí)際訪問(wèn)的寄存器 用戶 系統(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 無(wú) SPSR_svc SPSR_abt SPSR_und SPSR_irq SPSR_fiq 堆棧指針寄存器 R13( SP) 寄存器 R13常作為 堆棧指針 ( SP Stack Pointer)。 1個(gè)用于 用戶和系統(tǒng) 模式,其余 5個(gè)分別用于 5種異常模式。這樣在發(fā)生 FIQ中斷后,可以不必執(zhí)行保存和恢復(fù)( R8R12)的指令,從而加速 FIQ的處理速度。 寄存器類別 寄存器在匯編中的名稱 各模式下實(shí)際訪問(wèn)的寄存器 用戶 系統(tǒng) 管理 中止 未定義 中斷 快中斷 通用寄存器和程序計(jì)數(shù)器 R0(a1) R0 R1(
點(diǎn)擊復(fù)制文檔內(nèi)容
黨政相關(guān)相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1