【正文】
) ?當(dāng)前程序狀態(tài)寄存器, cpsr ? 在特權(quán)模式下(除了系統(tǒng)模式)還可以訪問 ?一個特殊的 spsr(程序狀態(tài)保存寄存器),每一種異常模式對應(yīng)一個 SPSR 異常模式發(fā)生的時候用來存儲當(dāng)前程序的 CPSR ? 其他的微處理器沒有工作模式之分,自然沒有影子寄存器的概念。 ?運(yùn)行模式位 M[4: 0]: M0、 M M M M4是模式位。 F=1 禁止 FIQ中斷。 ?在 Thumb狀態(tài)下,僅有分支指令是有條件執(zhí)行的。 No. 21 2022 程序狀態(tài)寄存器 ?ARM體系結(jié)構(gòu)包含一個當(dāng)前程序狀態(tài)寄存器( CPSR)和五個備份的程序狀態(tài)寄存器( SPSRs)。與之類似,當(dāng)發(fā)生中斷或異常時,對應(yīng)的分組寄存器 R14_svc、R14_irq、 R14_fiq、 R14_abt和 R14_und用來保存 R15的返回值。 SS寄存器給定堆棧段的段基址, SP給定當(dāng)前堆棧的棧頂。 Data Aborts Interrupts Reset ? 不同的工作模式對應(yīng)不同的權(quán)限 ? 不同的工作模式對應(yīng)不同的寄存器組 ? 對于程序員而言,就是不同的編程模型 No. 17 2022 ARM的寄存器 ? 未備份 (未分組)寄存器 R0~R7 = 8 ?在所有的處理器模式下對應(yīng)同一個物理寄存器 ? 備份(分組)寄存器 R8~R12 52= 10 ?每個寄存器對應(yīng)兩個不同的物理寄存器 ?快速中斷模式下為一組物理寄存器 R8_fiq, R9_fiq…… ?其他模式下是一組物理寄存器 ? FIQ處理程序可以不必執(zhí)行保存和恢復(fù)現(xiàn)場的指令,加快中斷處理器過程 ? 備份寄存器 R13,R14 26= 12 ?共有 6組不同的 R13,R14,其中一組為用戶和系統(tǒng)模式使用 ?每一種異常模式都有自己的 R13,R14,共 5組 ?寄存器 R13,通常被用作棧指針,當(dāng)進(jìn)入異常模式以后,可以把需要使用的寄存器保存在 R13所指向的堆棧中,當(dāng)退出異常模式的時候,則彈出相應(yīng)的寄存器 ?寄存器 R14,通常被稱為連接寄存器( link register) ? 在每一種模式自己的 R14中存放當(dāng)前子程序的返回地址,譬如使用 BL跳轉(zhuǎn)指令的時候,當(dāng) R14中的值復(fù)制到 PC中的時候,子程序即返回 ? 在異常中斷發(fā)生的時候,該異常模式的物理 R14被設(shè)置為該異常模式將要返回的地址 No. 18 2022 寄存器 R13 ?寄存器 R13在 ARM指令中常用作堆棧指針 : ?但這只是一種習(xí)慣用法,用戶也可使用其他的寄存器作為堆棧指針。主要供操作系統(tǒng)任務(wù)使用。處理器模式可以通過軟件控制進(jìn)行切換,也可以通過外部中斷或異常處理過程進(jìn)行切換。以減少不同工作方式之間的切換代價。 作為 32位的微處理器, ARM體系結(jié)構(gòu)所支持的最大尋址空間為 4GB h a l f w o r d 4w o r d 1 60123456789101 1b y t e 0b y t e121314151617181920212223b y t e 1b y t e 2h a l f w o r d 1 4b y t e 3b y t e 6a d d r e ssbi t 3 1 bi t 0h a l f w o r d 1 2w o r d 8No. 13 2022 存儲器數(shù)據(jù)順序 ? BigEndian 和 LittleEndian ?處理器在存放多字節(jié)的數(shù)據(jù)時候 ,一般將低位字節(jié)存放在低地址單元 ,譬如X86 系列的處理器 。 ?半字( HalfWord):在 ARM體系結(jié)構(gòu)中,半字的長度為 16位,與 8位 /16位處理器體系結(jié)構(gòu)中字的長度一致。 ?地址累加 PC的值 — 地址寄存器, 再進(jìn)入地址累加器 再寫回寄存器組中的程序寄存器 產(chǎn)生下一個地址 No. 9 2022 第三講 ARM微處理器編程模型和異常處理 ?第二講 ARM7TDMI嵌入式微處理器原理 ?ARM 微處理器的編程模型 ?ARM微處理器的異常處理 No. 10 2022 編程模式 ? 寄存器 ?處理器內(nèi)部的存儲部件 ,不同處理器具有很大的不同 ?所有處理器都具有的 :程序計(jì)數(shù)器 (程序指針 ),狀態(tài)寄存器 (標(biāo)識處理器的狀態(tài) ),累加寄存器 (用于算術(shù)運(yùn)算 ) ?處理器通常所說的 8位 /16位 /32位 /64位 ,是指其內(nèi)部寄存器的位寬 ? 堆棧 ?先進(jìn)后出 ,中斷和任務(wù)調(diào)度中保存現(xiàn)場和局部變量 ?很多處理器都有一個或者多個堆棧指針 編程模式: 處理器指令集定義了操作,程序員通過操作改變處理器的系統(tǒng)狀態(tài),這些狀態(tài)是由可見寄存器和存儲器中的數(shù)據(jù)項(xiàng)構(gòu)成的。No. 1 2022 第三講 ARM微處理器編程模型和異常處理 ?第二講 ARM7TDMI嵌入式微處理器原理 ?ARM 微處理器的編程模型 ?ARM微處理器的異常處理 No. 2 2022 存儲程序處理器 a d d r e s si n s t r u c t i o n sp r o c e s s o rm e m o r yr e g i s t e r si n s t r u c t i o n sd a t a0 0 . . 0 016FF . . F F16a n d d a t aNo. 3 2022 指令的執(zhí)行周期 No. 4 2022 控制和數(shù)據(jù)通路 取指 譯碼:根據(jù)指令 產(chǎn)生控制信號 在適當(dāng)?shù)臅r間向正確的部件發(fā)正確的控制信號 數(shù)據(jù)通路 : 在控制信號的控制下執(zhí)行運(yùn)算或傳輸功能 No. 5 2022 數(shù)據(jù)通路: ?寄存器組 ?地址寄存器 ?讀數(shù)據(jù)寄存器 ?寫數(shù)據(jù)寄存器 ?乘法器 ?桶型移位器 ?32位 ALU ?地址累加器 ?A BUS ?B BUS ?ALU BUS ? INC BUS No. 6 2022 流水技術(shù)的本質(zhì) No. 7 2022 ARM7 TDMI 三級流水線 Cycle Operation ADD SUB ORR AND EOR ORR 1 2 3 4 5 6 7 8 9 F D E F D E F E F D E F D E D F D E W F Fetch D Decode E Execute M ARM Thumb ?PC PC 取指 指令從存儲器中取出 ?PC- 4 PC- 2 譯碼 對指令使用的寄存器進(jìn)行譯碼 數(shù)據(jù)控制信號