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

正文內(nèi)容

arm9體系結(jié)構(gòu),arm9內(nèi)部資源,arm9內(nèi)部結(jié)構(gòu)教程-文庫吧資料

2025-05-19 22:15本頁面
  

【正文】 寄 存 器 類 別寄 存 器 在 匯編 中 的 名 稱各 種 模 式 下 實 際 訪 問 的 寄 存 器通用寄存器和程序計數(shù)器狀 態(tài) 寄 存 器用 戶 系 統(tǒng) 管 理 中 止 未 定 義 中 斷 快 速 中 斷R 0 ( a 1 )R 1 ( a 2 )R 2 ( a 3 )R 3 ( a 4 )R 4 ( v 1 )R 5 ( v 2 )R 6 ( v 3 )R 7 ( v 4 , W R )S PL RP CC P S RR 1 3R 1 4R 0R 1R 2R 3R 4R 5R 6R 7R 1 3 _ f i qR 1 4 _ f i qR 1 3 _ s v cR 1 4 _ s v cR 1 3 _ a b tR 1 4 _ a b tR 1 3 _ u n dR 1 4 _ u n dR 1 3 _ i r qR 1 4 _ i r qR 1 5C P S R? Thumb狀態(tài)下的寄存器 ( 3) ( 2) 一般的通用寄存器 : 在匯編語言中寄存器 R0 ~ R7為保存數(shù)據(jù)或地址值的通用寄存器 , 對于任何處理器模式 , 它們中的每一個都對應(yīng)于相同的 32位物理寄存器 。 ? Thumb狀態(tài)下的寄存器 ( 2) 表 Thumb狀態(tài)各種模式下的寄存器 注意 : 括號內(nèi)為 ATPCS中寄存器的命名,可以使用 Rn匯編偽指令將寄存器定義多個名字。 因此 , 在定義局部變量時請盡量定義為 32位長度的 , 比如用于循環(huán)計數(shù)的變量 。 如果把局部變量定義為 8位或者 16位 , 它們也獨占著一個 32位寄存器 , 非但沒有減少寄存器的使用量 , 還會導(dǎo)致編譯器使用額外的指令來限定變量的內(nèi)容 。 注意 2: 根據(jù) ATPCS規(guī)定 ( 規(guī)定了子程序間調(diào)用的基本規(guī)則 ) , 子程序中的局部變量使用內(nèi)部寄存器 R4~R11來保存 ( Thumb狀態(tài)為 R4~R7, 如果寄存器不夠用則存放在內(nèi)存中 ) 。 ? ARM狀態(tài)下的寄存器( 16) CPSR與 SPSR相互之間的關(guān)系: ■ 當(dāng)一個特定的異常中斷發(fā)生時 , 將 CPSR的當(dāng)前值保存到相應(yīng)異常模式下的 SPSR, 然后設(shè)臵 CPSR為相應(yīng)的異常模式; ■ 從異常中斷程序退出返回時 , 可通過保存在 SPSR中的值來恢復(fù) CPSR。 如果改變處理器的模式 , 新模式的分組寄存器將取代原來模式的分組寄存器組 。 除用戶模式之外 , 每一種處理器模式都可以通過改寫 CPSR中的模式位來改變 。 表 CPSR與 SPSR狀態(tài)寄存器 狀 態(tài) 寄 存 器 用 戶 系 統(tǒng) 管 理 中 止 未 定 義 中 斷 快 速 中 斷S R S R _ s v cC P S RS P S RC P S RS R S R _ a b t S R S R _ u n d S R S R _ i r q S R S R _ f i q? ARM狀態(tài)下的寄存器( 15) 注意: 由于用戶模式和系統(tǒng)模式不是異常中斷 , 所以它們沒有 SPSR。 S U B R 1 , P C , 4 ; R 1 存 放 下 面 S T R 指 令 的 地 址S T R P C , [ R 0 ] ; 保 存 “ S T R 指 令 地 址 + 便 移 量 ” 到 R 0 中L D R R 0 , [ R 0 ] ; 然 后 重 裝S U B R 0 , R 0 , R 1 ; 計 算 偏 移 量 = P C S T R 地 址? ARM狀態(tài)下的寄存器( 14) ( 6) CPSR與 SPSR : 所有模式全部共享一個程序狀態(tài)寄存器 CPSR,ARM內(nèi)核就是通過使用 CPSR來監(jiān)視和控制內(nèi)部操作的。 由于 ARM指令是字對齊的 , 寫入 R15值的結(jié)果bit[1:0]必須為 0b00, 否則結(jié)果將不可預(yù)測 。 例如 , 使用程序清單 ? ARM狀態(tài)下的寄存器( 13) R0中 。 由于上述原因 , 最好避免使用 STR和 STM指令來保存 R15, 否則會影響程序的可移植性 。 偏移量究竟是 8還是12( 或是其他數(shù)值 ) 取決于 ARM的芯片設(shè)計 。 ① 讀 R15: 由于 ARM指令是字對齊的 , PC值的結(jié)果 bit[1:0]總為 0。 寄存器 R14在其他任何時候可作為一個通用寄存器。 ② 當(dāng)發(fā)生異常中斷時 , 應(yīng)注意保證異常處理程序不會破壞 LR, 因為 LR保存的是異常處理程序的返回地址 ,即將異常處理程序的返回地址保存到 LR對應(yīng)的異常模式寄存器中 。 通常有 2種方式實現(xiàn)子程序的返回操作 。 表 鏈接寄存器 鏈 接 寄 存 器 用 戶 系 統(tǒng) 管 理 中 止 未 定 義 中 斷 快 速 中 斷R 1 4 ( L R ) R 1 4 R 1 4 _ f i qR 1 4 _ s v c R 1 4 _ a b t R 1 4 _ u n d R 1 4 _ i r q? ARM狀態(tài)下的寄存器( 10) 在結(jié)構(gòu)上 R14有 2種特殊功能: ① 當(dāng)使用 BL指令調(diào)用子程序時 , 返回地址將自動存入R14中 。 堆 棧 指 針 用 戶 系 統(tǒng) 管 理 中 止 未 定 義 中 斷 快 速 中 斷R 1 3 ( S P ) R 1 3 R 1 3 _ f i qR 1 3 _ s v c R 1 3 _ a b t R 1 3 _ u n d R 1 3 _ i r q? ARM狀態(tài)下的寄存器( 9) ( 4) 鏈接寄存器 R14( LR) : 寄存器 R14也稱為鏈接寄存器 ( LR) , 子程序的返回地址將自動地存入到 R14中 。 這些堆棧指針分別為 R1 R13_svc、 R13_abt、 R13_und、 R13_irq、R13_fiq, 如表 。 ARM處理器一共有 6個堆棧寄存器 , 其中用戶模式和系統(tǒng)模式共用一個 , 每種異常模式都有專用的 R13寄存器 。 如果把堆棧比作是一個水桶 , 那么桶底就相當(dāng)于棧底 , 而桶中的水面就相當(dāng)于棧頂 。 還有一種情況是 , 如果程序運行過程中 , 局部變量的數(shù)量太多 , 以至于處理器內(nèi)部的寄存器無法全部裝下 ? ARM狀態(tài)下的寄存器( 7) 時 , 程序員或者編譯器會使用堆棧來作為數(shù)據(jù)暫存空間, 將暫時未用到的數(shù)據(jù)壓棧處理 , 當(dāng)需要用到時再取出來 。 在前兩種情況下 , 通常是把子程序或者異常服務(wù)程序?qū)⒁玫降募拇嫫鲀?nèi)容保存到堆棧中 。 堆棧是在內(nèi)存中劃分出的一段存儲空間 , 這個存儲空間就像是一個大的數(shù)據(jù)倉庫 , 用于暫時保存一些數(shù)據(jù) 。 ? ARM狀態(tài)下的寄存器( 5) 寄存器 R13和 R14分別有 6個不同的物理寄存器 , 其中的一個是用戶模式和系統(tǒng)模式共用的 , 其余的 5個分別對應(yīng)于其他 5種異常模式 。 其中 , 一組用于除 FIQ模式之外的所有寄存器模式 ( R8 ~ R12) , 另一組用于 FIQ模式 ( R8_fiq ~ R12_fiq) 。 寄存器 R8 ~ R14所對應(yīng)的物理寄存器取決于當(dāng)前的處理器模式 , 幾乎所有允許使用通用寄存器的指令都允許使用寄存器 R8 ~ R14。 ? ARM狀態(tài)下的寄存器( 4) ( 2) 一般的通用寄存器 : 寄存器 R0 ~ R7為保存數(shù)據(jù)或地址值的通用寄存器, 這是因為 在任何處理器模式下 , R0 ~R7 中的每一個寄存器都是同一個 32位物理寄存器 。 表 ARM狀態(tài)各種模式下的寄存器 寄 存 器 類 別寄 存 器 在 匯編 中 的 名 稱S R S R _ s v c各 種 模 式 下 實 際 訪 問 的 寄 存 器通用寄存器和程序計數(shù)器狀 態(tài) 寄 存 器用 戶 系 統(tǒng) 管 理 中 止 未 定 義 中 斷 快 速 中 斷R 0 ( a 1 )R 1 ( a 2 )R 2 ( a 3 )R 3 ( a 4 )R 4 ( v 1 )R 5 ( v 2 )R 6 ( v 3 )R 7 ( v 4 )R 8 ( v 5 )R 9 ( S B , v 6 )R 1 0 ( S L , v 7 )R 1 1 ( F P , v 8 )R 1 2 ( I P )R 1 3 ( S P )R 1 4 ( L R )R 1 5 ( P C )C P S RS P S RR 1 3R 1 4R 0R 1R 2R 3R 4R 5R 6R 7R 8R 9R 1 0R 1 1R 1 2R 8 _ f i qR 9 _ f i qR 1 0 _ f i qR 1 1 _ f i qR 1 2 _ f i qR 1 3 _ f i qR 1 4 _ f i qR 1 3 _ s v cR 1 4 _ s v cR 1 3 _ a b tR 1 4 _ a b tR 1 3 _ u n dR 1 4 _ u n dR 1 3 _ i r qR 1 4 _ i r qR 1 5C P S RS R S R _ a b t S R S R _ u n d S R S R _ i r q S R S R _ f i q? ARM狀態(tài)下的寄存器( 3) 注意: 括號內(nèi)為 ATPCS中寄存器的命名 , 可以使用 Rn匯編偽指令將寄存器定義多個名字 。 具有特殊用途的寄存器 R13( 堆棧指針 SP) 、 R14( 鏈接寄存器LR) 、 R15( 程序計數(shù)器 PC) 盡管也可以作為通用寄存器來使用 , 但由于程序編譯器通常認(rèn)為 R13始終指向一個有效的堆棧結(jié)構(gòu) , 所以一定要注意將 R13當(dāng)作通用寄存器來使用是非常危險的 。 在 ARM狀態(tài)中 , 可在任何時候同時訪問 R0 ~ R15這 16個通用寄存器和 1個或 2個狀態(tài)寄存器 ( CPSR和SPSR) 。 ? ARM狀態(tài)下的寄存器( 1) ( 1) 各種模式下實際訪問的寄存器 : 寄存器文件包含了程序員實際能訪問的所有寄存器, 但是究竟哪些寄存器對程序員來說當(dāng)前是可用的 , 則完全取決于當(dāng)前的處理器模式 。 37個寄存器分別為: ■ 31個通用 32位寄存器: R0 ~ R1 R13_svc、R14_svc、 R13_abt、 R14_abt、 R13_und、 R14_und、R13_irq、 R14_irq、 R8_fiq、 R9_fiq、 R10_fiq、 R11_fiq、R12_fiq、 R13_fiq、 R14_fiq; ■ 6個狀態(tài)寄存器: CPSR、 SRSR_svc、 SPSR_abt、SPSR_und、 SPSR_irq、 SPSR_fiq。 注意: 用戶模式與系統(tǒng)模式不能由異常進入 , 也就是說要想進入系統(tǒng)模式 , 必須通過修改 CPSR才能實現(xiàn) , 程序清單 。 系統(tǒng)模式與用戶模式具有完全相同的寄存器 , 由于系統(tǒng)模式是一種特權(quán)模式 , 因此可以訪問所有的系統(tǒng)資源 , 也可以直接進行處理器模式切換;但系統(tǒng)模式主要供操作系統(tǒng)的任務(wù)使用 , 允許對 CPSR進行讀 /寫訪問 。 究竟何時進入異常模式 , 具體規(guī)定如下: ■ 處理器復(fù)位之后進入管理模式 , 操作系統(tǒng)內(nèi)核通常處于管理模式; ■ 當(dāng)處理器訪問存儲器失敗時 , 進入數(shù)據(jù)訪問中止模式; ■ 當(dāng)處理器遇到不支持的指令時 , 進入未定義模式; ■ 中斷模式與快速中斷模式分別對 ARM處理器兩種不同級別的中斷作出響應(yīng) 。 M S R C P S R _ c , ( N o I n t | S V C 3 2 M o d e ) / / 從 系 統(tǒng) 模 式 切 換 到 管 理 模 式? ( 2) 每一種異常與處理器的一種模式相對應(yīng) , 一旦應(yīng)用程序發(fā)生特定的異常中斷時 , 處理器便進入相應(yīng)的異常模式 , 處理器內(nèi)核立即跳轉(zhuǎn)到向量表中的某個入口地址 , 執(zhí)行相應(yīng)的處理程序 。 除此之外 , 也可以在內(nèi)核對異?;蛘咧袛囗憫?yīng)時由硬件切換到異常模式 。 表 ARM處理器模式 與 用 戶 模 式 類 似 , 但 具 有 直 接 切 換 到 其 他 模 式 等 特 權(quán)用 于 支 持 操 作 系 統(tǒng) 的 特 權(quán)
點擊復(fù)制文檔內(nèi)容
黨政相關(guān)相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1