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

正文內(nèi)容

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

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

【正文】 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)志位。結(jié)果為負(fù)數(shù)時(shí) N=1,結(jié)果為正數(shù)或零時(shí) N=0; ? Z (Zero) 零標(biāo)志,指令執(zhí)行結(jié)果為 0時(shí), Z=1(通常表示比較結(jié)果“ 相等 ” ),否則 Z=0; ? C( Carry) 進(jìn)、借位標(biāo)志,當(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ì)于結(jié)合移位操作的非加法 /減法指令(指單純的移位操作), C為從最高位最后移出的值,其它指令 C通常不變; ? V ( oVerflow) 當(dāng)進(jìn)行加法 /減法運(yùn)算,并且發(fā)生有符號(hào)溢出時(shí)V=1,否則 V=0,其它指令 V通常不變。 程序狀態(tài)寄存器 ? ARM指令集 ——條件碼 C代碼: If(a b) a++。 Else b++。 對(duì)應(yīng)的匯編代碼: CMP R0,R1 。R0與 R1比較 ( 減法 ) ADDHI R0,R0,1 。若 R0R1, 則 R0=R0+1 ADDLS R1,R1,1 。若 R0≤R 1, 則 R1=R1+1 示例:比較兩個(gè)值大小,并進(jìn)行相應(yīng)自加 1處理 HI Higher ( C=1且 Z=0) LS Lower or Same( C=0或 Z=1) 程序狀態(tài)寄存器 ? 控制位 ? 中斷禁止位包括 I和 F位: ? 當(dāng) I位置位時(shí), IRQ中斷響應(yīng)被禁止; ? 當(dāng) F位置位時(shí), FIQ中斷響應(yīng)被禁止。 ? 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)生未定義指令中斷。 模式位包括 M M M M1和 M0,在特權(quán)模式下(除用戶(hù)模式),可以設(shè)置 CPSR中的這些位進(jìn)行模式切換。 M[4:0] 模式 0b10000 用戶(hù) 0b10001 FIQ 0b10010 IRQ 0b10011 管理 0b10111 中止 0b11011 未定義 0b11111 系統(tǒng) 程序狀態(tài)寄存器 ? 簡(jiǎn)介 每個(gè)異常模式還帶有一個(gè)程序狀態(tài)保存寄存器 ( SPSR),它用于 保存 在異常事件發(fā)生之前的 CPSR。對(duì) CPSR和 SPSR可以通過(guò)特殊指令( MSR)進(jìn)行寫(xiě)入。 注意 :如果通過(guò)程序修改 CPSR寄存器中的模式位 bit[4:0]進(jìn)入異常模式,那么硬件將不會(huì)把 CPSR保存至 SPSR中,而通過(guò)異常發(fā)生進(jìn)入時(shí)硬件會(huì)自動(dòng)將 CPSR放入 SPSR。 程序狀態(tài)寄存器 ? CPSR中的其他位(保留位) CPSR中的 保留位 被保留,將來(lái)可能使用。為了提高程序的可移植性, 不要修改這些保留位。 另外, 請(qǐng)確保程序的運(yùn)行不受保留位的值影響 ,因?yàn)閷?lái)的處理器可能會(huì)將這些位設(shè)置為 1或者 0。 第一章 目錄 ? ? ?I/O ? ? ? ? ? ? ? ? ? ?6. 程序狀態(tài)寄存器 ?數(shù)據(jù)類(lèi)型 ARM體系中存儲(chǔ)系統(tǒng) ARM地址空間的大小為 4GB ARM處理器支持下列數(shù)據(jù)類(lèi)型: ?字節(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é)則存放在 高地址 中。 ?小端格式 (Little Endian) 字?jǐn)?shù)據(jù)的 高字節(jié) 存儲(chǔ)在 高地址 中,而字?jǐn)?shù)據(jù)的 低字節(jié)則存放在 低地址 中。 ARM缺省設(shè)置是小端格式 (設(shè)置 cp15中的 c1 bit [7]可選擇) 體系結(jié)構(gòu)直接支持的數(shù)據(jù)類(lèi)型 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ǔ)在高地址中。 字?jǐn)?shù)據(jù)的高字節(jié)存儲(chǔ)在高地址中,字?jǐn)?shù)據(jù)的低字節(jié)存儲(chǔ)在低地址中。 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ǔ)器訪(fǎng)問(wèn) 都合理的對(duì)齊 。 字 訪(fǎng)問(wèn)的地址通常是字對(duì)齊的 (一條 ARM指令占一個(gè)字 , 也就要求字對(duì)齊 ) , 而 半字 訪(fǎng)問(wèn)使用的地址是半字對(duì)齊的 。 不按這種方式對(duì)齊的存儲(chǔ)器訪(fǎng)問(wèn)稱(chēng)為 非對(duì)齊的存儲(chǔ)器訪(fǎng)問(wèn) 。 ARM存儲(chǔ)器系統(tǒng) 非對(duì)齊的存儲(chǔ)訪(fǎng)問(wèn)操作 ? 非對(duì)齊的 指令預(yù)取 操作 當(dāng)處理器處于 ARM狀態(tài) 期間,如果 寫(xiě)入 PC的值是非字對(duì)齊的 (地址的低兩位不為 0b00,即不能被 4整除),那么,要么指令執(zhí)行結(jié)果不可預(yù)知,要么將地址值中的最低兩位忽略。不同的指令版本,處理不同。 系統(tǒng)可以 指定 ,當(dāng)發(fā)生非對(duì)齊的指令預(yù)取操作時(shí),將 該地址值原封不動(dòng)地送到存儲(chǔ)系統(tǒng)。讓存儲(chǔ)系統(tǒng)自己處理最低兩位。 ARM存儲(chǔ)器系統(tǒng) ? 非對(duì)齊的 數(shù)據(jù)訪(fǎng)問(wèn) 操作 對(duì)于 load/store(加載 /存儲(chǔ))操作,如果是 非 對(duì)齊的數(shù)據(jù)訪(fǎng)問(wèn)操作,系統(tǒng)定義了下面 3種可能結(jié)果: ?執(zhí)行的結(jié)果不可預(yù)知 ?忽略字單元地址的低兩位的值,即訪(fǎng)問(wèn)地址為( address and 0xfffffffc)的字單元;忽略半字單元地址的最低位的值,即訪(fǎng)問(wèn)地址為( address and 0xfffffffe)的半字單元 ?若系統(tǒng)指定由 存儲(chǔ)系統(tǒng) 實(shí)現(xiàn) 忽略字單元地址的低兩位的值, 則該地址值原封不動(dòng)地送到 存儲(chǔ)系統(tǒng)(讓存儲(chǔ)系統(tǒng)自己去處理) 。 ARM存儲(chǔ)器系統(tǒng) 在前面指令的執(zhí)行尚未完成時(shí)將指令從存儲(chǔ)器中取出 。 這個(gè)動(dòng)作稱(chēng)為 指令的預(yù)取 。 指令的預(yù)取 并不是實(shí)際執(zhí)行指令 。 被預(yù)取的指令可能得不到運(yùn)行 , 可能的原因是: ?發(fā)生異常中斷 , 程序?qū)?huì)跳轉(zhuǎn)到異常中斷處理程序處執(zhí)行 , 當(dāng)前預(yù)取的指令將被拋棄; ?前面執(zhí)行跳轉(zhuǎn)指令時(shí) 發(fā)生跳轉(zhuǎn) , 當(dāng)前預(yù)取的指令也將被拋棄; ? 指令的預(yù)取和自修改代碼 ARM存儲(chǔ)器系統(tǒng) ??? ??? ??? 內(nèi)核流水性 執(zhí)行 譯碼 預(yù)取 LDR R0,AddInstr STR R0,NextInstr NextInstr SUB R1,R1,1 . . . AddInstr ADD R1,R1,1 (1) (2) (4) (3) 自修改代碼指的是代碼在執(zhí)行過(guò)程中可能修改自身 。 在存儲(chǔ)器中的指令可能在它被預(yù)取之后 , 被執(zhí)行之前 , 如果有數(shù)據(jù)訪(fǎng)問(wèn)指令修改了位于主存中的該指令 , 這時(shí)被預(yù)取的指令和主存中對(duì)應(yīng)的指令不同 。 對(duì)于支持指令預(yù)取的 ARM系統(tǒng),自修改代碼可能帶來(lái)潛在的問(wèn)題: LDR R0,AddInstr ST ,NextInstr LDR R0,AddInstr ST ,NextInstr LDR R0,AddInstr SUB 1,R1,1 ( 1) 預(yù)取指; ( 2) 預(yù)取指 , “ LDR”指令進(jìn)入譯碼階段; 3 從地址 ( 3) 預(yù)取指 , “ STR 指令進(jìn)入譯碼階段 , 同時(shí) “ LDR”指令進(jìn)入執(zhí)行階段 , 結(jié)果是將地址 ( 4) 的指令裝入 R0; 4 繼續(xù)預(yù)取指 , 同時(shí) “ STR”指令進(jìn)入執(zhí)行階段 , 結(jié)果是將 “ ADD”指令存入地址( 3) , “ SUB”指令被覆蓋; 5 雖然 “ SUB”指令在存儲(chǔ)器中被覆蓋 ,但是它仍存在于流水線(xiàn)上 , 并進(jìn)入執(zhí)行階段; ADD (3) SUB 1,R1,1 ST ,NextInstr ??? ??? SUB 1,R1,1 ARM存儲(chǔ)器系統(tǒng) LDR R0,AddInstr STR R0,NextInstr NextInstr SUB R1,R1,1 . . . AddInstr ADD R1,R1,1 (1) (2) (4) (3) ?但有可能不按照上面所說(shuō)的執(zhí)行:因?yàn)槿绻?“ SUB”指令預(yù)取之后 , 執(zhí)行之前 , 發(fā)生中斷 , 那么預(yù)取的 “ SUB”指令將被丟棄 , 而重新預(yù)取 ,此次預(yù)取的是 ADD指令 。 ?如果 ARM處理器或存儲(chǔ)器系統(tǒng)允許對(duì)預(yù)取指令進(jìn)行備份 , 并使用這些備份而不是重新預(yù)取 , 那么以后執(zhí)行這段代碼 , 仍將執(zhí)行 “ SUB”指令 。 ? 預(yù)取可能存在的問(wèn)題 提示 :因?yàn)樽孕薷拇a有許多問(wèn)題需要考慮 , 建議盡量避免使用 。 ARM存儲(chǔ)器系統(tǒng) ARM處理器的高級(jí)調(diào)試特性使應(yīng)用程序 、 操作系統(tǒng)和硬件的開(kāi)發(fā)變得更加容易 。 調(diào)試接口簡(jiǎn)介 ? 典型調(diào)試系統(tǒng) 調(diào)試主機(jī): 一臺(tái)運(yùn)行調(diào)試軟件的計(jì)算機(jī)。 協(xié)議轉(zhuǎn)換器: 將調(diào)試主機(jī)發(fā)出的高級(jí)命令轉(zhuǎn)換到處理器 JTAG接口的低級(jí)命令。 調(diào)試目標(biāo): 具體的硬件目標(biāo)板。 練習(xí) ? 分別列舉 ARM的處理器模式。 ? ARM核有多少個(gè)通用寄存器? ? R13通常用來(lái)存放什么? ? PC和 LR分別使用哪個(gè)寄存器? ? CPSR的哪一位控制是否響應(yīng) fiq中斷? ? ARM指令采取什么對(duì)齊方式 ? ? 在復(fù)位后, ARM處理器處于何種模式、何種狀態(tài)? ? 試畫(huà)出 ARM7 3級(jí)流水線(xiàn) 3條指令執(zhí)行示意圖,并用 PC指出相應(yīng)地址。 ? 當(dāng)發(fā)生數(shù)據(jù)訪(fǎng)問(wèn)異常時(shí), ARM處理器在處理異常之前使用哪個(gè)寄存器保存 CPSR?
點(diǎn)擊復(fù)制文檔內(nèi)容
黨政相關(guān)相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1