ARM處理器介紹_第1頁
ARM處理器介紹_第2頁
ARM處理器介紹_第3頁
ARM處理器介紹_第4頁
ARM處理器介紹_第5頁
已閱讀5頁,還剩84頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、ARM 處理器(2010(2010年年0909月月0909日日新聞新聞) )ARMARM正式發(fā)布正式發(fā)布Cortex-Cortex-A15A15處理器:主頻處理器:主頻2.5GHz2.5GHz、加速、加速5 5倍倍ARM今天正式宣布推出Cortex-A15 MPCoreCortex-A15 MPCore處理處理器器,相比當(dāng)前的高級(jí)智能手機(jī)處理器,可在同可在同等功耗水平上帶來等功耗水平上帶來5 5倍的性能提升倍的性能提升。Cortex-A15處理器基于ARMv7-A CortexARMv7-A Cortex微架構(gòu)微架構(gòu),單個(gè)處理器集群內(nèi)擁有單個(gè)處理器集群內(nèi)擁有1-41-4個(gè)個(gè)SMPSMP處理核心

2、處理核心,彼此通過AMBA 4技術(shù)互聯(lián),支持一系列ISA,能夠在不斷下降的功耗、散熱和成本預(yù)算基礎(chǔ)上提供高度可擴(kuò)展性解決方案,廣泛適用于下一廣泛適用于下一代智能手機(jī)、平板機(jī)、大屏幕移動(dòng)計(jì)算設(shè)備、代智能手機(jī)、平板機(jī)、大屏幕移動(dòng)計(jì)算設(shè)備、高端數(shù)字家庭娛樂終端、無線基站、企業(yè)基礎(chǔ)高端數(shù)字家庭娛樂終端、無線基站、企業(yè)基礎(chǔ)架構(gòu)產(chǎn)品等等。架構(gòu)產(chǎn)品等等。新聞新聞(2010(2010年年0909月月0909日日新聞新聞) )ARMARM正式發(fā)布正式發(fā)布Cortex-Cortex-A15A15處理器:主頻處理器:主頻2.5GHz2.5GHz、加速、加速5 5倍倍該處理器主頻最高可達(dá)主頻最高可達(dá)2.5GHz2.5

3、GHz,并可根據(jù)不同應(yīng)用領(lǐng)域靈活調(diào)整,比如智能手機(jī)和移動(dòng)計(jì)算的1-1.5GHz單/雙核心、數(shù)字家庭娛樂的1-2GHz雙/四核心、家庭和Web 2.0服務(wù)器的1.5-2.5GHz四/八核心乃至更大規(guī)?;ヂ?lián)。作為Cortex-A系列家族的最新成員,Cortex-A15是一顆具備廣泛軟件與功能兼容性的處理器,為操作系統(tǒng)虛擬為操作系統(tǒng)虛擬化、軟錯(cuò)誤糾正、更大內(nèi)存尋址能力、系統(tǒng)一致性提供化、軟錯(cuò)誤糾正、更大內(nèi)存尋址能力、系統(tǒng)一致性提供了高效的硬件支持了高效的硬件支持,同時(shí)保留該系列低功耗設(shè)計(jì)優(yōu)勢(shì),以及全面的應(yīng)用兼容性,可立即投入現(xiàn)有開發(fā)者、軟件生態(tài)系統(tǒng),包括Google Android、Adobe Fl

4、ash Player、Java SE、JavaFX、Linux、Windows Embedded Compact 7、Symbian、Ubuntu,還有七百多家ARM Connected Community社區(qū)成員提供應(yīng)用軟件、硬件、軟件開發(fā)工具、中間件、SoC設(shè)計(jì)設(shè)備。新聞新聞ARM Cortex-A家族發(fā)展路線圖新聞新聞Cortex-A15核心架構(gòu)圖新聞新聞1 1、馮、馮諾依曼體系結(jié)構(gòu)模型諾依曼體系結(jié)構(gòu)模型指令寄存器指令寄存器控制器控制器數(shù)據(jù)通道數(shù)據(jù)通道輸入輸入輸出輸出中央處理器中央處理器存儲(chǔ)器存儲(chǔ)器程序程序指令指令0 0指令指令1 1指令指令2 2指令指令3 3指令指令4 4數(shù)據(jù)數(shù)據(jù)數(shù)據(jù)

5、數(shù)據(jù)0 0數(shù)據(jù)數(shù)據(jù)1 1數(shù)據(jù)數(shù)據(jù)2 22.1 硬件基礎(chǔ)2、馮、馮諾依曼體系的特點(diǎn)諾依曼體系的特點(diǎn)1)數(shù)據(jù)與指令都存儲(chǔ)在存儲(chǔ)器)數(shù)據(jù)與指令都存儲(chǔ)在存儲(chǔ)器中中2)被大多數(shù)計(jì)算機(jī)所采用)被大多數(shù)計(jì)算機(jī)所采用3)ARM7馮諾依曼體系馮諾依曼體系3 3、哈佛體系結(jié)構(gòu)、哈佛體系結(jié)構(gòu)指令寄存器指令寄存器控制器控制器數(shù)據(jù)通道數(shù)據(jù)通道輸入輸入輸出輸出中央處理器中央處理器程序存儲(chǔ)器程序存儲(chǔ)器指令指令0 0指令指令1 1指令指令2 2數(shù)據(jù)存儲(chǔ)器數(shù)據(jù)存儲(chǔ)器數(shù)據(jù)數(shù)據(jù)0 0數(shù)據(jù)數(shù)據(jù)1 1數(shù)據(jù)數(shù)據(jù)2 2地址地址指令指令地址地址數(shù)據(jù)數(shù)據(jù)4、哈佛體系結(jié)構(gòu)的特點(diǎn)、哈佛體系結(jié)構(gòu)的特點(diǎn)1)程序存儲(chǔ)器與數(shù)據(jù)存儲(chǔ)器分開)程序存儲(chǔ)器與數(shù)據(jù)

6、存儲(chǔ)器分開2)提供了較大的數(shù)存儲(chǔ)器帶寬)提供了較大的數(shù)存儲(chǔ)器帶寬3)適合于數(shù)字信號(hào)處理)適合于數(shù)字信號(hào)處理4)大多數(shù))大多數(shù)DSP都是哈佛結(jié)構(gòu)都是哈佛結(jié)構(gòu)5)ARM9及后續(xù)處理器是哈佛結(jié)構(gòu)及后續(xù)處理器是哈佛結(jié)構(gòu)5 5、CISCCISC:復(fù)雜指令集(:復(fù)雜指令集(Complex Instruction Set ComputerComplex Instruction Set Computer)具有大量的指令和尋址方式具有大量的指令和尋址方式8/28/2原則:原則:80%80%的程序只使用的程序只使用20%20%的指令的指令大多數(shù)程序只使用少量的指令就能夠運(yùn)行大多數(shù)程序只使用少量的指令就能夠運(yùn)行。6

7、 6、RISCRISC:精簡(jiǎn)指令集(:精簡(jiǎn)指令集(Reduced Instruction Set Computer)Reduced Instruction Set Computer)在通道中只包含最有用的指令在通道中只包含最有用的指令確保數(shù)據(jù)通道快速執(zhí)行每一條指令確保數(shù)據(jù)通道快速執(zhí)行每一條指令使使CPUCPU硬件結(jié)構(gòu)設(shè)計(jì)變得更為簡(jiǎn)單硬件結(jié)構(gòu)設(shè)計(jì)變得更為簡(jiǎn)單7、流水線技術(shù):幾個(gè)指令可以并行執(zhí)行提高了CPU的運(yùn)行效率內(nèi)部信息流要求通暢流動(dòng) n為增加處理器指令流的速度,為增加處理器指令流的速度,ARM7 系列使用系列使用3級(jí)級(jí)流水線流水線.u允許多個(gè)操作同時(shí)處理,而非順序執(zhí)行。允許多個(gè)操作同時(shí)處理,

8、而非順序執(zhí)行。譯碼譯碼(Decode)取指取指(Fetch)執(zhí)行執(zhí)行(Execute)從存儲(chǔ)器中讀取指令從存儲(chǔ)器中讀取指令解碼指令中用到的寄存器解碼指令中用到的寄存器寄存器讀(從寄存器寄存器讀(從寄存器Bank)移位及移位及ALU操作操作寄存器寫(到寄存器寄存器寫(到寄存器Bank )PCPCPC - 4PC-2PC - 8PC - 4ARMThumbPC指向正被取指的指令,而非正在執(zhí)行的指令指向正被取指的指令,而非正在執(zhí)行的指令7、流水線技術(shù):n該例中用該例中用6個(gè)時(shí)鐘周期執(zhí)行了個(gè)時(shí)鐘周期執(zhí)行了6條指令條指令n所有的操作都在寄存器中(單周期執(zhí)行)所有的操作都在寄存器中(單周期執(zhí)行)n指令周期

9、數(shù)指令周期數(shù) (CPI) = 1CycleOperationADDSUBORRANDEORORR123456789FDEFDEFEFDEFDEDFDEWF 取指取指D 解碼解碼E 執(zhí)行執(zhí)行MARM7 流水線ARM處理器內(nèi)核流水線2.2 ARM微處理器系列 q ARM7系列q ARM9系列q ARM9E系列q ARM10E系列q SecurCore系列q Intel的Xscaleq Cortex系列ARM處理器架構(gòu)進(jìn)化史ARM處理器核心技術(shù)演進(jìn)路線17數(shù)據(jù)源:ARM,三星,DIGITIMES整理,2009/9ARMv5ARMv5指令集指令集ARM926EJ-SARM1026EJ-SARMv6AR

10、Mv6指令集指令集ARM1136J(F)-SARM11 MPCore (14核心)ARMv7-CortexARMv7-Cortex指令集指令集Cortex-A8Cortex-A9 MPCore (14核心)400MHz600MHz800MHz200MHz20052006200720082009130nm制程90nm制程65nm制程45nm制程1GHzARM處理器不同功能特性ARM處理器不同功能特性ARM7微處理器系列 q ARM7系列是低功耗的32位RISC處理器,最適合用于對(duì)價(jià)位和功耗要求較高的消費(fèi)類應(yīng)用。ARM7系列有如下特點(diǎn):具有嵌入式ICERT邏輯,調(diào)試開發(fā)方便;極低的功耗,適合對(duì)功耗

11、要求較高的應(yīng)用,如便攜式產(chǎn)品;能夠提供0.9MIPS/ MHz的三級(jí)流水線結(jié)構(gòu);兼容16位的Thumb指令集,代碼密度高;對(duì)操作系統(tǒng)的支持廣泛,如Windows CE、Linux、Palm OS等; 指令系統(tǒng)與ARM9系列、ARM9E系列和ARM10E系列兼容,便于用戶的產(chǎn)品升級(jí)換代;主頻最高可達(dá)130M,高速的運(yùn)算處理能力能勝任絕大多數(shù)的復(fù)雜應(yīng)用。ARM7微處理器系列q 主要應(yīng)用領(lǐng)域:工業(yè)控制、Internet設(shè)備、網(wǎng)絡(luò)和調(diào)制解調(diào)器設(shè)備、移動(dòng)電話等多種多媒體等。q ARM7系列微處理器包括如下幾種類型的核:ARM7TDMI、ARM7TDMI-S、ARM720T、ARM7EJ。其中,ARM7T

12、MDI是目前使用最廣泛的32位嵌入式RISC處理器,屬低端ARM處理器核。TDMI的基本含義為:T:支持16位壓縮指令集Thumb;D:支持片上Debug;M:內(nèi)嵌硬件乘法器(Multiplier)I:嵌入式ICE,支持片上斷點(diǎn)和調(diào)試點(diǎn);ARM9微處理器系列 q ARM9系列微處理器在高性能和低功耗特性方面提供最佳的表現(xiàn)。具有以下特點(diǎn): 5級(jí)流水線,指令執(zhí)行效率更高。 提供1.1MIPS/MHz的哈佛結(jié)構(gòu)。 支持32位ARM指令集和16位Thumb指令集。支持32位的高速AMBA總線接口。全性能的MMU,支持Windows CE、Linux、Palm OS等多種主流嵌入式操作系統(tǒng)。 MPU支持

13、實(shí)時(shí)操作系統(tǒng)。支持?jǐn)?shù)據(jù)Cache和指令Cache。ARM9微處理器系列qARM9系列微處理器主要應(yīng)用于無線設(shè)備、儀器儀表、安全系統(tǒng)、機(jī)頂盒、高端打印機(jī)、數(shù)字照相機(jī)和數(shù)字?jǐn)z像機(jī)等。qARM9系列微處理器包含ARM920T、ARM922T和ARM940T三種類型,以適用于不同的應(yīng)用場(chǎng)合。ARM9E微處理器系列 qARM9E系列微處理器的主要特點(diǎn)如下:支持DSP指令集,適合于需高速數(shù)字信號(hào)處理的場(chǎng)合。5級(jí)流水線,指令執(zhí)行效率更高。支持32位ARM指令集和16位Thumb指令集。支持32位的高速AMBA總線接口。支持VFP9浮點(diǎn)處理協(xié)處理器。全性能的MMU,支持眾多主流嵌入式操作系統(tǒng)。支持?jǐn)?shù)據(jù)Cach

14、e和指令Cache,具有更高的處理能力。ARM9E微處理器系列qARM9E系列微處理器主要應(yīng)用于下一代無線設(shè)備、數(shù)字消費(fèi)品、成像設(shè)備、工業(yè)控制、存儲(chǔ)設(shè)備和網(wǎng)絡(luò)設(shè)備等領(lǐng)域。qARM9E系列微處理器包含ARM926EJ-S、ARM946E-S和ARM966E-S三種類型,以適用于不同的應(yīng)用場(chǎng)合。ARM10E微處理器系列 qARM10E系列微處理器的主要特點(diǎn)如下:支持DSP指令集,適合于需要高速數(shù)字信號(hào)處理的場(chǎng)合。6級(jí)流水線,指令執(zhí)行效率更高。支持32位ARM指令集和16位Thumb指令集。支持32位的高速AMBA總線接口。支持VFP10浮點(diǎn)處理協(xié)處理器。全性能的MMU,支持眾多主流嵌入式操作系統(tǒng)。

15、支持?jǐn)?shù)據(jù)Cache和指令Cache,具有更高的處理能力主頻最高可達(dá)400M。內(nèi)嵌并行讀/寫操作部件。ARM10E微處理器系列qARM10E系列微處理器主要應(yīng)用于下一代無線設(shè)備、數(shù)字消費(fèi)品、成像設(shè)備、工業(yè)控制、通信和信息系統(tǒng)等領(lǐng)域。qARM10E系列微處理器包含ARM1020E、ARM1022E和ARM1026EJ-S三種類型,以適用于不同的應(yīng)用場(chǎng)合。SecurCore微處理器系列 qSecurCore系列微處理器除了具有ARM體系結(jié)構(gòu)各種主要特點(diǎn)外,還在系統(tǒng)安全方面具有如下的特點(diǎn):帶有靈活的保護(hù)單元,確保操作系統(tǒng)和應(yīng)用數(shù)據(jù)的安全。采用軟內(nèi)核技術(shù),防止外部對(duì)其進(jìn)行掃描探測(cè)??杉捎脩糇约旱陌踩?/p>

16、性和其他協(xié)處理器。SecurCore微處理器系列qSecurCore系列微處理器主要應(yīng)用于一些對(duì)安全性要求較高的應(yīng)用產(chǎn)品及應(yīng)用系統(tǒng),如電子商務(wù)、電子政務(wù)、電子銀行業(yè)務(wù)、網(wǎng)絡(luò)和認(rèn)證系統(tǒng)等領(lǐng)域。qSecurCore系列微處理器 SecurCore SC100、SecurCore SC110、SecurCore SC200和SecurCore SC210四種類型。StrongARM微處理器系列 qIntel StrongARM處理器是便攜式通訊產(chǎn)品和消費(fèi)類電子產(chǎn)品的理想選擇,已成功應(yīng)用于多家公司的掌上電腦系列產(chǎn)品。qIntel StrongARM SA-1100處理器是采用ARM體系結(jié)構(gòu)高度集成的3

17、2位RISC微處理器。它融合了Intel公司的設(shè)計(jì)和處理技術(shù)以及ARM體系結(jié)構(gòu)的電源效率,采用在軟件上兼容ARMv4體系結(jié)構(gòu)、同時(shí)采用具有Intel技術(shù)優(yōu)點(diǎn)的體系結(jié)構(gòu)。Xscale處理器 qXscale 處理器是基于ARMv5TE體系結(jié)構(gòu)的解決方案,是一款全性能、高性價(jià)比、低功耗的處理器。它支持16位的Thumb指令和DSP指令集,已使用在數(shù)字移動(dòng)電話、個(gè)人數(shù)字助理和網(wǎng)絡(luò)產(chǎn)品等場(chǎng)合。Cortex微處理器系列ARM Cortex發(fā)布于2005年,為各種不同性能需求的應(yīng)用提供了一整套完整的優(yōu)化解決方案,該系列的技術(shù)劃分完全針對(duì)不同的市場(chǎng)應(yīng)用和性能需求。目前ARM Cortex定義了三個(gè)系列:u“A

18、”系列面向尖端的基于虛擬內(nèi)存的操作系統(tǒng)和用戶應(yīng)用;u“R”系列針對(duì)實(shí)時(shí)系統(tǒng);u“M”系列對(duì)微控制器和低成本應(yīng)用提供優(yōu)化。Cortex系列Cortex-MCortex-M系列:系列:針對(duì)價(jià)格敏感應(yīng)用領(lǐng)域的嵌入式處理器,只支持只支持Thumb-2Thumb-2指令集指令集,強(qiáng)調(diào)操作的確定性,以及性能、功耗和價(jià)格的平衡。u是為對(duì)開發(fā)費(fèi)用非常敏感同時(shí)對(duì)性能要求小斷增加的嵌入式應(yīng)用(如微控制器、汽車車身控制系統(tǒng)和各種大型家電)所設(shè)計(jì)的,主要面向單片機(jī)領(lǐng)域,可以說是51單品機(jī)的完美替代品。Cortex系列Cortex-RCortex-R系列:系列:針對(duì)實(shí)時(shí)系統(tǒng)的嵌入式處理器。支持支持ARMARM、Thum

19、bThumb和和Thumb-2Thumb-2指令集指令集,強(qiáng)調(diào)實(shí)時(shí)性,存儲(chǔ)器管理只支持物理地址。u主要面向?qū)崟r(shí)控制領(lǐng)域,如汽車剎車控制等,這一領(lǐng)域要求處理器響應(yīng)中斷的實(shí)時(shí)性高,并且要盡可能的節(jié)約成本Cortex系列Cortex-ACortex-A系列:系列:針對(duì)復(fù)雜OS和應(yīng)用程序(如多媒體)的應(yīng)用處理器。支持支持ARMARM、ThumbThumb和和Thumb-2Thumb-2指令集指令集,強(qiáng)調(diào)高性能與合理的功耗,存儲(chǔ)器管理支持虛擬地址。u面向尖端的基于虛擬內(nèi)存的操作系統(tǒng)和用戶應(yīng)用,如多媒體,上網(wǎng)本等采用/不采用整合式處理器的手機(jī)芯片業(yè)者與智能型手機(jī)37Nokia 5800HTC G1Moto

20、rola A3100Sony Ericsson X1RIM BlackBerry StormiPhone 3G SPalm PreSamsungOmnia HD主攻獨(dú)立應(yīng)用處理器或基頻芯片單處理器的智能型手機(jī)雙處理器的智能型手機(jī)Marvell、Broadcom、ST-Ericsson等應(yīng)用處理器:德儀、三星、Freescale等基頻:英飛凌等推出整合式處理器手機(jī)芯片廠商數(shù)據(jù)源:DIGITIMES,2009/9Cortex處理器技術(shù)特點(diǎn)ARMv7架構(gòu)是在ARMv6架構(gòu)的基礎(chǔ)上誕生的。該架構(gòu)采用了Thumb-2技術(shù)。Thumb-2技術(shù)比純32位代碼少使用31%的內(nèi)存,減小了系統(tǒng)開銷,同時(shí)能夠提供比

21、已有的基于Thumb技術(shù)的解決方案高出38%的性能。2.3 ARM存儲(chǔ)方法直接支持的數(shù)據(jù)類型ARM處理器支持下列數(shù)據(jù)類型:字節(jié) 8位半字 16位(必須分配為占用兩個(gè)字節(jié))字 32為(必須分配為占用4各字節(jié))1112342ARM920TARM920T微處理器的工作狀態(tài)一般有兩種:微處理器的工作狀態(tài)一般有兩種:ARMARM狀態(tài):狀態(tài):處理器執(zhí)行處理器執(zhí)行3232位的、字對(duì)齊的位的、字對(duì)齊的ARMARM指令;指令;ThumbThumb狀態(tài):狀態(tài):處理器執(zhí)行處理器執(zhí)行1616位的、半字對(duì)齊的位的、半字對(duì)齊的ThumbThumb指令。指令。大端格式和小端格式: 大端格式中字?jǐn)?shù)據(jù)的高字節(jié)存儲(chǔ)在低地址中,而

22、字?jǐn)?shù)據(jù)的低字節(jié)則存放在高地址中,如圖2.2所示。 圖2.2 大端格式存儲(chǔ)字?jǐn)?shù)據(jù) 與大端存儲(chǔ)格式相反,在小端存儲(chǔ)格式中,低地址中存放的是字?jǐn)?shù)據(jù)的低字節(jié),高地址存放的是字?jǐn)?shù)據(jù)的高字節(jié)。如圖2.3所示 圖2.3 小端格式存儲(chǔ)字?jǐn)?shù)據(jù)2.4 處理器模式ARM體系結(jié)構(gòu)支持7種處理器模式,分別為:u用戶模式u快中斷模式u中斷模式u管理模式u中止模式u未定義模式u系統(tǒng)模式處理器模式說明備注 用戶 (usr)正常程序工作模式不能直接切換到其它模式 系統(tǒng) (sys)用于支持操作系統(tǒng)的特權(quán)任務(wù)等與用戶模式類似,但具有可以直接切換到其它模式等特權(quán) 快中斷 (fiq)支持高速數(shù)據(jù)傳輸及通道處理FIQ異常響應(yīng)時(shí)進(jìn)入此模式

23、 中斷 (irq)用于通用中斷處理IRQ異常響應(yīng)時(shí)進(jìn)入此模式 管理 (svc)操作系統(tǒng)保護(hù)代碼系統(tǒng)復(fù)位和軟件中斷響應(yīng)時(shí)進(jìn)入此模式 中止 (abt)用于支持虛擬內(nèi)存和/或存儲(chǔ)器保護(hù)在ARM7TDMI沒有大用處 未定義 (und)支持硬件協(xié)處理器的軟件仿真未定義指令異常響應(yīng)時(shí)進(jìn)入此模式2.4 處理器模式處理器模式2.4 處理器模式特權(quán)模式處理器模式說明備注 用戶 (usr)正常程序工作模式不能直接切換到其它模式 系統(tǒng) (sys)用于支持操作系統(tǒng)的特權(quán)任務(wù)等與用戶模式類似,但具有可以直接切換到其它模式等特權(quán) 快中斷 (fiq)支持高速數(shù)據(jù)傳輸及通道處理FIQ異常響應(yīng)時(shí)進(jìn)入此模式 中斷 (irq)用于

24、通用中斷處理IRQ異常響應(yīng)時(shí)進(jìn)入此模式 管理 (svc)操作系統(tǒng)保護(hù)代碼系統(tǒng)復(fù)位和軟件中斷響應(yīng)時(shí)進(jìn)入此模式 中止 (abt)用于支持虛擬內(nèi)存和/或存儲(chǔ)器保護(hù)在ARM7TDMI沒有大用處 未定義 (und)支持硬件協(xié)處理器的軟件仿真未定義指令異常響應(yīng)時(shí)進(jìn)入此模式 除用戶模式外,其它模式均為特權(quán)模式。ARM內(nèi)部寄存器和一些片內(nèi)外設(shè)在硬件設(shè)計(jì)上只允許(或者可選為只允許)特權(quán)模式下訪問。此外,特權(quán)模式可以自由的切換處理器模式,而用戶模式不能直接切換到別的模式。 未定義 (und) 中止 (abt) 管理 (svc) 中斷 (irq) 快中斷 (fiq) 系統(tǒng) (sys)2.4 處理器模式異常模式處理器

25、模式說明備注 用戶 (usr)正常程序工作模式不能直接切換到其它模式 系統(tǒng) (sys)用于支持操作系統(tǒng)的特權(quán)任務(wù)等與用戶模式類似,但具有可以直接切換到其它模式等特權(quán) 快中斷 (fiq)支持高速數(shù)據(jù)傳輸及通道處理FIQ異常響應(yīng)時(shí)進(jìn)入此模式 中斷 (irq)用于通用中斷處理IRQ異常響應(yīng)時(shí)進(jìn)入此模式 管理 (svc)操作系統(tǒng)保護(hù)代碼系統(tǒng)復(fù)位和軟件中斷響應(yīng)時(shí)進(jìn)入此模式 中止 (abt)用于支持虛擬內(nèi)存和/或存儲(chǔ)器保護(hù)在ARM7TDMI沒有大用處 未定義 (und)支持硬件協(xié)處理器的軟件仿真未定義指令異常響應(yīng)時(shí)進(jìn)入此模式 未定義 (und) 中止 (abt) 管理 (svc) 中斷 (irq) 快中斷

26、 (fiq)這五種模式稱為異常模式。它們除了可以通過程序切換進(jìn)入外,也可以由特定的異常進(jìn)入。當(dāng)特定的異常出現(xiàn)時(shí),處理器進(jìn)入相應(yīng)的模式。每種異常模式都有一些獨(dú)立的寄存器,以避免異常退出時(shí)用戶模式的狀態(tài)不可靠。2.4 處理器模式用戶和系統(tǒng)模式處理器模式說明備注 用戶 (usr)正常程序工作模式不能直接切換到其它模式 系統(tǒng) (sys)用于支持操作系統(tǒng)的特權(quán)任務(wù)等與用戶模式類似,但具有可以直接切換到其它模式等特權(quán) 快中斷 (fiq)支持高速數(shù)據(jù)傳輸及通道處理FIQ異常響應(yīng)時(shí)進(jìn)入此模式 中斷 (irq)用于通用中斷處理IRQ異常響應(yīng)時(shí)進(jìn)入此模式 管理 (svc)操作系統(tǒng)保護(hù)代碼系統(tǒng)復(fù)位和軟件中斷響應(yīng)時(shí)進(jìn)

27、入此模式 中止 (abt)用于支持虛擬內(nèi)存和/或存儲(chǔ)器保護(hù)在ARM7TDMI沒有大用處 未定義 (und)支持硬件協(xié)處理器的軟件仿真未定義指令異常響應(yīng)時(shí)進(jìn)入此模式這兩種模式都不能由異常進(jìn)入,而且它們使用完全相同的寄存器組。系統(tǒng)模式是特權(quán)模式,不受用戶模式的限制。操作系統(tǒng)在該模式下訪問用戶模式的寄存器就比較方便,而且操作系統(tǒng)的一些特權(quán)任務(wù)可以使用這個(gè)模式訪問一些受控的資源。 系統(tǒng) (sys) 用戶 (usr)2.5 內(nèi)部寄存器在ARM處理器內(nèi)部有37個(gè)用戶可見的寄存器。在不同的工作模式和處理器狀態(tài)下,程序員可以訪問的寄存器也不盡相同。寄存器類別寄存器在匯編中的名稱各模式下實(shí)際訪問的寄存器用戶系統(tǒng)

28、管理中止未定義中斷快中斷通用寄存器和程序計(jì)數(shù)器R0(a1)R0R1(a2)R1R2(a3)R2R3(a4)R3R4(v1)R4R5(v2)R5R6(v3)R6R7(v4)R7R8(v5)R8R8_fiqR9(SB,v6)R9R9_fiqR10(SL,v7)R10R10_fiqR11(FP,v8)R11R11_fiqR12(IP)R12R12_fiqR13(SP)R13R13_svcR13_abtR13_undR13_irqR13_fiqR14(LR)R14R14_svcR14_abtR14_undR14_irqR14_fiqR15(PC)R15狀態(tài)寄存器CPSRCPSRSPSR無SPSR_ab

29、tSPSR_abtSPSR_undSPSR_irqSPSR_fiqARM狀態(tài)各模式下的寄存器寄存器類別寄存器在匯編中的名稱各模式下實(shí)際訪問的寄存器用戶系統(tǒng)管理中止未定義中斷快中斷通用寄存器和程序計(jì)數(shù)器R0(a1)R0R1(a2)R1R2(a3)R2R3(a4)R3R4(v1)R4R5(v2)R5R6(v3)R6R7(v4)R7R8(v5)R8R8_fiqR9(SB,v6)R9R9_fiqR10(SL,v7)R10R10_fiqR11(FP,v8)R11R11_fiqR12(IP)R12R12_fiqR13(SP)R13R13_svcR13_abtR13_undR13_irqR13_fiqR14

30、(LR)R14R14_svcR14_abtR14_undR14_irqR14_fiqR15(PC)R15狀態(tài)寄存器CPSRCPSRSPSR無SPSR_abtSPSR_abtSPSR_undSPSR_irqSPSR_fiqARM狀態(tài)各模式下的寄存器SPSR_fiqSPSR_irqSPSR_undSPSR_abtSPSR_abtCPSRR15R14_fiqR14_irqR14_undR14_abtR14_svcR14R13_fiqR13_irqR13_undR13_abtR13_svcR13R12_fiqR12R11_fiqR11R10_fiqR10R9_fiqR9R8_fiqR8R7R6R5R4

31、R3R2R1R0所有的37個(gè)寄存器,分成兩大類:31個(gè)通用32位寄存器;6個(gè)狀態(tài)寄存器。寄存器類別寄存器在匯編中的名稱各模式下實(shí)際訪問的寄存器用戶系統(tǒng)管理中止未定義中斷快中斷通用寄存器和程序計(jì)數(shù)器R0(a1)R0R1(a2)R1R2(a3)R2R3(a4)R3R4(v1)R4R5(v2)R5R6(v3)R6R7(v4)R7R8(v5)R8R8_fiqR9(SB,v6)R9R9_fiqR10(SL,v7)R10R10_fiqR11(FP,v8)R11R11_fiqR12(IP)R12R12_fiqR13(SP)R13R13_svcR13_abtR13_undR13_irqR13_fiqR14(L

32、R)R14R14_svcR14_abtR14_undR14_irqR14_fiqR15(PC)R15狀態(tài)寄存器CPSRCPSRSPSR無SPSR_abtSPSR_abtSPSR_undSPSR_irqSPSR_fiq無CPSRR15R14R13R12R11R10R9R8R7R6R5R4R3R2R1R0用戶用戶無CPSRR15R14R13R12R11R10R9R8R7R6R5R4R3R2R1R0系統(tǒng)系統(tǒng)SPSR_abtCPSRR15R14_svcR13_svcR12R11R10R9R8R7R6R5R4R3R2R1R0管理管理SPSR_abtCPSRR15R14_abtR13_abtR12R11R

33、10R9R8R7R6R5R4R3R2R1R0中止中止SPSR_undCPSRR15R14_undR13_undR12R11R10R9R8R7R6R5R4R3R2R1R0未定義未定義SPSR_irqCPSRR15R14_irqR13_irqR12R11R10R9R8R7R6R5R4R3R2R1R0中斷中斷SPSR_fiqCPSRR15R14_fiqR13_fiqR12_fiqR11_fiqR10_fiqR9_fiqR8_fiqR7R6R5R4R3R2R1R0快中斷快中斷ARM狀態(tài)各模式下可以訪問的寄存器寄存器類別寄存器在匯編中的名稱各模式下實(shí)際訪問的寄存器用戶系統(tǒng)管理中止未定義中斷快中斷通用寄存

34、器和程序計(jì)數(shù)器R0(a1)R0R1(a2)R1R2(a3)R2R3(a4)R3R4(v1)R4R5(v2)R5R6(v3)R6R7(v4)R7R8(v5)R8R8_fiqR9(SB,v6)R9R9_fiqR10(SL,v7)R10R10_fiqR11(FP,v8)R11R11_fiqR12(IP)R12R12_fiqR13(SP)R13R13_svcR13_abtR13_undR13_irqR13_fiqR14(LR)R14R14_svcR14_abtR14_undR14_irqR14_fiqR15(PC)R15狀態(tài)寄存器CPSRCPSRSPSR無SPSR_abtSPSR_abtSPSR_un

35、dSPSR_irqSPSR_fiq一般的通用寄存器R13_fiqR13_irqR13_undR13_abtR13_svcR13R12_fiqR12R11_fiqR11R10_fiqR10R9_fiqR9R8_fiqR8R7R6R5R4R3R2R1R0在匯編語言中寄存器R0R13為保存數(shù)據(jù)或地址值的通用寄存器。它們是完全通用的寄存器,不會(huì)被體系結(jié)構(gòu)作為特殊用途,并且可用于任何使用通用寄存器的指令。寄存器類別寄存器在匯編中的名稱各模式下實(shí)際訪問的寄存器用戶系統(tǒng)管理中止未定義中斷快中斷通用寄存器和程序計(jì)數(shù)器R0(a1)R0R1(a2)R1R2(a3)R2R3(a4)R3R4(v1)R4R5(v2)R

36、5R6(v3)R6R7(v4)R7R8(v5)R8R8_fiqR9(SB,v6)R9R9_fiqR10(SL,v7)R10R10_fiqR11(FP,v8)R11R11_fiqR12(IP)R12R12_fiqR13(SP)R13R13_svcR13_abtR13_undR13_irqR13_fiqR14(LR)R14R14_svcR14_abtR14_undR14_irqR14_fiqR15(PC)R15狀態(tài)寄存器CPSRCPSRSPSR無SPSR_abtSPSR_abtSPSR_undSPSR_irqSPSR_fiq一般的通用寄存器R13_fiqR13_irqR13_undR13_abtR

37、13_svcR13R12_fiqR12R11_fiqR11R10_fiqR10R9_fiqR9R8_fiqR8R7R6R5R4R3R2R1R0R7R6R5R4R3R2R1R0其中R0R7為未分組的寄存器,也就是說對(duì)于任何處理器模式,這些寄存器都對(duì)應(yīng)于相同的32位物理寄存器。寄存器類別寄存器在匯編中的名稱各模式下實(shí)際訪問的寄存器用戶系統(tǒng)管理中止未定義中斷快中斷通用寄存器和程序計(jì)數(shù)器R0(a1)R0R1(a2)R1R2(a3)R2R3(a4)R3R4(v1)R4R5(v2)R5R6(v3)R6R7(v4)R7R8(v5)R8R8_fiqR9(SB,v6)R9R9_fiqR10(SL,v7)R10R

38、10_fiqR11(FP,v8)R11R11_fiqR12(IP)R12R12_fiqR13(SP)R13R13_svcR13_abtR13_undR13_irqR13_fiqR14(LR)R14R14_svcR14_abtR14_undR14_irqR14_fiqR15(PC)R15狀態(tài)寄存器CPSRCPSRSPSR無SPSR_abtSPSR_abtSPSR_undSPSR_irqSPSR_fiq一般的通用寄存器R14_fiqR14_irqR14_undR14_abtR14_svcR14R13_fiqR13_irqR13_undR13_abtR13_svcR13R12_fiqR12R11_f

39、iqR11R10_fiqR10R9_fiqR9R8_fiqR8寄存器R8R14為分組寄存器。它們所對(duì)應(yīng)的物理寄存器取決于當(dāng)前的處理器模式,幾乎所有允許使用通用寄存器的指令都允許使用分組寄存器寄存器類別寄存器在匯編中的名稱各模式下實(shí)際訪問的寄存器用戶系統(tǒng)管理中止未定義中斷快中斷通用寄存器和程序計(jì)數(shù)器R0(a1)R0R1(a2)R1R2(a3)R2R3(a4)R3R4(v1)R4R5(v2)R5R6(v3)R6R7(v4)R7R8(v5)R8R8_fiqR9(SB,v6)R9R9_fiqR10(SL,v7)R10R10_fiqR11(FP,v8)R11R11_fiqR12(IP)R12R12_fi

40、qR13(SP)R13R13_svcR13_abtR13_undR13_irqR13_fiqR14(LR)R14R14_svcR14_abtR14_undR14_irqR14_fiqR15(PC)R15狀態(tài)寄存器CPSRCPSRSPSR無SPSR_abtSPSR_abtSPSR_undSPSR_irqSPSR_fiq一般的通用寄存器R12_fiqR12R11_fiqR11R10_fiqR10R9_fiqR9R8_fiqR8寄存器R8R12有兩個(gè)分組的物理寄存器。一個(gè)用于除FIQ模式之外的所有寄存器模式,另一個(gè)用于FIQ模式。這樣在發(fā)生FIQ中斷后,可以加速FIQ的處理速度。寄存器類別寄存器在匯

41、編中的名稱各模式下實(shí)際訪問的寄存器用戶系統(tǒng)管理中止未定義中斷快中斷通用寄存器和程序計(jì)數(shù)器R0(a1)R0R1(a2)R1R2(a3)R2R3(a4)R3R4(v1)R4R5(v2)R5R6(v3)R6R7(v4)R7R8(v5)R8R8_fiqR9(SB,v6)R9R9_fiqR10(SL,v7)R10R10_fiqR11(FP,v8)R11R11_fiqR12(IP)R12R12_fiqR13(SP)R13R13_svcR13_abtR13_undR13_irqR13_fiqR14(LR)R14R14_svcR14_abtR14_undR14_irqR14_fiqR15(PC)R15狀態(tài)寄存

42、器CPSRCPSRSPSR無SPSR_abtSPSR_abtSPSR_undSPSR_irqSPSR_fiq一般的通用寄存器寄存器R13、R14分別有6個(gè)分組的物理寄存器。一個(gè)用于用戶和系統(tǒng)模式,其余5個(gè)分別用于5種異常模式。R14_fiqR14_irqR14_undR14_abtR14_svcR14R13_fiqR13_irqR13_undR13_abtR13_svcR13寄存器類別寄存器在匯編中的名稱各模式下實(shí)際訪問的寄存器用戶系統(tǒng)管理中止未定義中斷快中斷通用寄存器和程序計(jì)數(shù)器R0(a1)R0R1(a2)R1R2(a3)R2R3(a4)R3R4(v1)R4R5(v2)R5R6(v3)R6R

43、7(v4)R7R8(v5)R8R8_fiqR9(SB,v6)R9R9_fiqR10(SL,v7)R10R10_fiqR11(FP,v8)R11R11_fiqR12(IP)R12R12_fiqR13(SP)R13R13_svcR13_abtR13_undR13_irqR13_fiqR14(LR)R14R14_svcR14_abtR14_undR14_irqR14_fiqR15(PC)R15狀態(tài)寄存器CPSRCPSRSPSR無SPSR_abtSPSR_abtSPSR_undSPSR_irqSPSR_fiq堆棧指針寄存器R13(SP)寄存器R13常作為堆棧指針(SP)。在ARM指令集當(dāng)中,沒有以特殊

44、方式使用R13的指令或其它功能,只是習(xí)慣上都這樣使用。但是在Thumb指令集中存在使用R13的指令。寄存器類別寄存器在匯編中的名稱各模式下實(shí)際訪問的寄存器用戶系統(tǒng)管理中止未定義中斷快中斷通用寄存器和程序計(jì)數(shù)器R0(a1)R0R1(a2)R1R2(a3)R2R3(a4)R3R4(v1)R4R5(v2)R5R6(v3)R6R7(v4)R7R8(v5)R8R8_fiqR9(SB,v6)R9R9_fiqR10(SL,v7)R10R10_fiqR11(FP,v8)R11R11_fiqR12(IP)R12R12_fiqR13(SP)R13R13_svcR13_abtR13_undR13_irqR13_fi

45、qR14(LR)R14R14_svcR14_abtR14_undR14_irqR14_fiqR15(PC)R15狀態(tài)寄存器CPSRCPSRSPSR無SPSR_abtSPSR_abtSPSR_undSPSR_irqSPSR_fiq鏈接寄存器R14(LR)R14為鏈接寄存器(LR),在結(jié)構(gòu)上有兩個(gè)特殊功能:在每種模式下,模式自身的R14版本用于保存子程序返回地址;當(dāng)發(fā)生異常時(shí),將R14對(duì)應(yīng)的異常模式版本設(shè)置為異常返回地址(有些異常有一個(gè)小的固定偏移量)。Lable程序A程序BR142.5 內(nèi)部寄存器R14寄存器與子程序調(diào)用BL Lable地址A?MOV PC,LRR14(地址A)Lable?1.程

46、序A執(zhí)行過程中調(diào)用程序B;操作流程2.程序跳轉(zhuǎn)至標(biāo)號(hào)Lable,執(zhí)行程序B。同時(shí)硬件將“BL Lable”指令的下一條指令所在地址存入R14;3.程序B執(zhí)行最后,將R14寄存器的內(nèi)容放入PC,返回程序A;2.5 內(nèi)部寄存器R14寄存器與異常發(fā)生異常發(fā)生時(shí),程序要跳轉(zhuǎn)至異常服務(wù)程序,對(duì)返回地址的處理與子程序調(diào)用類似,都是由硬件完成的。區(qū)別在于有些異常有一個(gè)小常量的偏移。2.5 內(nèi)部寄存器R14寄存器注意要點(diǎn)當(dāng)發(fā)生異常嵌套時(shí),這些異常之間可能會(huì)發(fā)生沖突。例如:如果用戶在用戶模式下執(zhí)行程序時(shí)發(fā)生了IRQ中斷,用戶模式寄存器不會(huì)被破壞。但是如果允許在IRQ模式下的中斷處理程序重新使能IRQ中斷,并且發(fā)

47、生了嵌套的IRQ中斷時(shí),外部中斷處理程序保存在R14_irq中的任何值都將被嵌套中斷的返回地址所覆蓋。(詳細(xì)過程見下頁的動(dòng)畫)2.5 內(nèi)部寄存器R14寄存器注意要點(diǎn)R14R14_irq用戶模式下的程序IRQ模式下的程序AareturnB.XA地址A地址A1.執(zhí)行用戶模式下的程序;2.發(fā)生IRQ中斷,硬件將某個(gè)地址存入IRQ模式下的R14_irq寄存器,用戶模式下的R14沒有被破壞;3. IRQ服務(wù)程序A執(zhí)行完畢,將R14_irq寄存器的內(nèi)容減去某個(gè)常量后存入PC,返回之前被中斷的程序;未被破壞2.5 內(nèi)部寄存器R14寄存器注意要點(diǎn)R14R14_irq用戶模式下的程序IRQ模式下的程序AaB.X

48、A地址A地址A1.執(zhí)行用戶模式下的程序;2.發(fā)生IRQ中斷,硬件將某個(gè)地址存入IRQ模式下的R14_irq寄存器,用戶模式下的R14沒有被破壞;3. IRQ服務(wù)程序A執(zhí)行完畢,將R14_irq寄存器的內(nèi)容減去某個(gè)常量后存入PC,返回之前被中斷的程序;未被破壞IRQ模式下的程序BareturnB.XA地址B地址B4. 如果在IRQ處理程序中打開IRQ中斷,并且再次發(fā)生IRQ中斷,或者調(diào)用子程序;5. 硬件將返回地址保存在R14_irq寄存器中,原來保存的返回地址將被覆蓋,造成錯(cuò)誤;被破壞6. 在程序B返回到程序A,然后在返回到用戶模式下被中斷的程序時(shí),發(fā)生錯(cuò)誤,將不能正確返回;returnret

49、urn 解決辦法是確保R14的對(duì)應(yīng)版本在發(fā)生中斷嵌套時(shí)不再保存任何有意義的值(將R14入棧),或者切換到其它處理器模式下。寄存器類別寄存器在匯編中的名稱各模式下實(shí)際訪問的寄存器用戶系統(tǒng)管理中止未定義中斷快中斷通用寄存器和程序計(jì)數(shù)器R0(a1)R0R1(a2)R1R2(a3)R2R3(a4)R3R4(v1)R4R5(v2)R5R6(v3)R6R7(v4)R7R8(v5)R8R8_fiqR9(SB,v6)R9R9_fiqR10(SL,v7)R10R10_fiqR11(FP,v8)R11R11_fiqR12(IP)R12R12_fiqR13(SP)R13R13_svcR13_abtR13_undR1

50、3_irqR13_fiqR14(LR)R14R14_svcR14_abtR14_undR14_irqR14_fiqR15(PC)R15狀態(tài)寄存器CPSRCPSRSPSR無SPSR_abtSPSR_abtSPSR_undSPSR_irqSPSR_fiq程序計(jì)數(shù)器R15(PC) 寄存器R15為程序計(jì)數(shù)器(PC),它指向正在取指的地址??梢哉J(rèn)為它是一個(gè)通用寄存器,但是對(duì)于它的使用有許多與指令相關(guān)的限制或特殊情況。如果R15使用的方式超出了這些限制,那么結(jié)果將是不可預(yù)測(cè)的。2.5 內(nèi)部寄存器讀R15的限制正常操作時(shí),從R15讀取的值是處理器正在取指的地址,即當(dāng)前正在執(zhí)行指令的地址加上8個(gè)字節(jié)(兩條AR

51、M指令的長度)。由于ARM指令總是以字為單位,所以R15寄存器的最低兩位總是為0。LDR R0,PC?PCPC-4PC-8正在執(zhí)行正在譯碼正在取指流水線狀態(tài)地址程序代碼2.5 內(nèi)部寄存器讀R15的限制當(dāng)使用STR或STM指令保存R15時(shí),會(huì)有一個(gè)例外。這些指令可能將當(dāng)前指令地址加8字節(jié)或加12字節(jié)保存(將來可能還有其它數(shù)字)。偏移量是8還是12取決于具體的ARM芯片,但是對(duì)于一個(gè)確定的芯片,這個(gè)值是一個(gè)常量。所以最好避免使用STR和STM指令來保存R15,如果很難做到,那么應(yīng)當(dāng)在程序中計(jì)算出該芯片的偏移量。2.5 內(nèi)部寄存器讀R15的限制計(jì)算偏移量程序代碼:SUBR1,PC,#4;R1=下面S

52、TR指令的地址STRPC,R0;保存STR指令地址+偏移量LDRR0,R0;然后重裝SUBR0,R0,R1;計(jì)算偏移量2.5 內(nèi)部寄存器寫R15的限制正常操作時(shí),寫入R15 的值被當(dāng)作一個(gè)指令地址,程序從這個(gè)地址處繼續(xù)執(zhí)行(相當(dāng)于執(zhí)行一次無條件跳轉(zhuǎn))。 2.5 內(nèi)部寄存器寫R15的限制由于ARM指令以字節(jié)為邊界,因此寫入R15的值最低兩位通常為0b00。具體的規(guī)則取決于內(nèi)核結(jié)構(gòu)的版本:在ARM結(jié)構(gòu)V3版及以下版本中,寫入R15的值的最低兩位被忽略,因此跳轉(zhuǎn)地址由指令的實(shí)際目標(biāo)地址(寫入R15的值)和0 xFFFFFFFC相與得到;在ARM結(jié)構(gòu)V4版及以上版本中,寫入R15的值的最低兩位為0,如

53、果不是,結(jié)果將不可預(yù)測(cè)。寄存器類別寄存器在匯編中的名稱各模式下實(shí)際訪問的寄存器用戶系統(tǒng)管理中止未定義中斷快中斷通用寄存器和程序計(jì)數(shù)器R0(a1)R0R1(a2)R1R2(a3)R2R3(a4)R3R4(v1)R4R5(v2)R5R6(v3)R6R7(v4)R7R8(v5)R8R8_fiqR9(SB,v6)R9R9_fiqR10(SL,v7)R10R10_fiqR11(FP,v8)R11R11_fiqR12(IP)R12R12_fiqR13(SP)R13R13_svcR13_abtR13_undR13_irqR13_fiqR14(LR)R14R14_svcR14_abtR14_undR14_ir

54、qR14_fiqR15(PC)R15狀態(tài)寄存器CPSRCPSRSPSR無SPSR_abtSPSR_abtSPSR_undSPSR_irqSPSR_fiq程序狀態(tài)寄存器CPSR寄存器CPSRCPSR為程序狀態(tài)寄存器程序狀態(tài)寄存器,在異常模式中,另外一個(gè)寄存器“程序狀態(tài)保存寄存器(SPSR)”可以被訪問。每種異常都有自己的SPSR,在因?yàn)楫惓J录M(jìn)入異常時(shí)它保存CPSR的當(dāng)前值,異常退出時(shí)可通過它恢復(fù)CPSR。詳細(xì)描述參看2.6小節(jié)。2.5 內(nèi)部寄存器Thumb狀態(tài)寄存器Thumb狀態(tài)寄存器集是ARM狀態(tài)集的子集,程序員可以直接訪問的寄存器為:8個(gè)通用寄存器R0R7;程序計(jì)數(shù)器(PC);堆棧指針

55、(SP);鏈接寄存器(LR);有條件訪問程序狀態(tài)寄存器( CPSR)。Thumb狀態(tài)各模式下的寄存器CPSRCPSR狀態(tài)寄存器R15PCR14_fiqR14_irqR14_undR14_abtR14_svcR14LRR13_fiqR13_irqR13_undR13_abtR13_svcR13SPR7R7(v4,wr)R6R6(v3)R5R5(v2)R4R4(v1)R3R3(a4)R2R2(a3)R1R1(a2)R0R0(a1)通用寄存器和程序計(jì)數(shù)器快中斷中斷未定義中止管理系統(tǒng)用戶各模式下實(shí)際訪問的寄存器寄存器在匯編中的名稱寄存器類別注意:括號(hào)內(nèi)為ATPCS中寄存器的命名,可以使用RN匯編偽指令

56、將寄存器定義多個(gè)名字。其中ADS1.2的匯編程序直接支持這些名稱,但注意a1a4,v1v4必須用小寫。Thumb狀態(tài)下的通用寄存器CPSRCPSR狀態(tài)寄存器R15PCR14_fiqR14_irqR14_undR14_abtR14_svcR14LRR13_fiqR13_irqR13_undR13_abtR13_svcR13SPR7R7(v4,wr)R6R6(v3)R5R5(v2)R4R4(v1)R3R3(a4)R2R2(a3)R1R1(a2)R0R0(a1)通用寄存器和程序計(jì)數(shù)器快中斷中斷未定義中止管理系統(tǒng)用戶各模式下實(shí)際訪問的寄存器寄存器在匯編中的名稱寄存器類別R7R6R5R4R3R2R1R0

57、 在匯編語言中寄存器R0R7為保存數(shù)據(jù)或地址值的通用寄存器。對(duì)于任何處理器模式,它們中的每一個(gè)都對(duì)應(yīng)于相同的32為物理寄存器。它們是完全通用的寄存器,不會(huì)被體系結(jié)構(gòu)作為特殊的用途,并且可用于任何使用通用寄存器的指令。Thumb狀態(tài)下的堆棧指針寄存器(SP)CPSRCPSR狀態(tài)寄存器R15PCR14_fiqR14_irqR14_undR14_abtR14_svcR14LRR13_fiqR13_irqR13_undR13_abtR13_svcR13SPR7R7(v4,wr)R6R6(v3)R5R5(v2)R4R4(v1)R3R3(a4)R2R2(a3)R1R1(a2)R0R0(a1)通用寄存器和程

58、序計(jì)數(shù)器快中斷中斷未定義中止管理系統(tǒng)用戶各模式下實(shí)際訪問的寄存器寄存器在匯編中的名稱寄存器類別堆棧指針SP對(duì)應(yīng)ARM狀態(tài)的寄存器R13。每個(gè)異常模式都有其自身的SP分組版本,SP通常指向各異常模式所專用的堆棧。注意:在發(fā)生異常時(shí),處理器自動(dòng)進(jìn)入ARM狀態(tài)。R13_fiqR13_irqR13_undR13_abtR13_svcR13Thumb狀態(tài)下的鏈接寄存器R14(LR)CPSRCPSR狀態(tài)寄存器R15PCR14_fiqR14_irqR14_undR14_abtR14_svcR14LRR13_fiqR13_irqR13_undR13_abtR13_svcR13SPR7R7(v4,wr)R6R6

59、(v3)R5R5(v2)R4R4(v1)R3R3(a4)R2R2(a3)R1R1(a2)R0R0(a1)通用寄存器和程序計(jì)數(shù)器快中斷中斷未定義中止管理系統(tǒng)用戶各模式下實(shí)際訪問的寄存器寄存器在匯編中的名稱寄存器類別鏈接寄存器LR對(duì)應(yīng)ARM狀態(tài)寄存器R14,在結(jié)構(gòu)上有兩個(gè)特殊功能,詳見“ARM狀態(tài)下的鏈接寄存器LR”。注意:在發(fā)生異常時(shí),處理器自動(dòng)進(jìn)入ARM狀態(tài)。R14_fiqR14_irqR14_undR14_abtR14_svcR142.5 內(nèi)部寄存器ARM狀態(tài)和Thumb狀態(tài)之間寄存器的關(guān)系Thumb狀態(tài)寄存器與ARM狀態(tài)寄存器有如下的關(guān)系:Thumb狀態(tài)R0R7與ARM狀態(tài)R0R7相同;T

60、humb狀態(tài)CPSR和SPSR與ARM狀態(tài)CPSR和SPSR相同;Thumb狀態(tài)SP映射到ARM狀態(tài)R13;Thumb狀態(tài)LR映射到ARM狀態(tài)R14;Thumb狀態(tài)PC映射到ARM狀態(tài)PC(R15)。 R1 R2 R3 R4 R5 T humb R6 R7 ( C PSR ) ( SPSR ) R1 R2 R3 R4 R5 A R M R6 R7 R8 ( C PSR ) ( SPSR ) R9 R10 R11 R12 R0 R0 狀態(tài) 狀態(tài) 堆棧指針(SP) 連接寄存器(LR) 程序計(jì)數(shù)器(PC) 當(dāng)前程序狀態(tài)寄存器 被保存程序狀態(tài)寄存器 堆棧指針(R13) 連接寄存器(R14) 程序計(jì)數(shù)器

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論