版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、第一章ARM概述及其基本編程模型ARM芯片具有RISC體系的一般特點,如:具有大量的寄存器絕大多數(shù)操作都在寄存器中進行,通過Load/Store的體系在內(nèi)存和寄存器之間進行數(shù)據(jù)傳遞尋址方式簡單采用固定長度的指令格式除此之外,ARM體系采用了一些特殊的技術(shù),在保證高性能的同時盡量減少芯片體積,減低芯片的功耗,這些技術(shù)包括:在同一條數(shù)據(jù)處理指令中包含算術(shù)邏輯處理單元和移位處理使用地址自動增加(減少);來優(yōu)化程序中循環(huán)處理Load/Store指令可以批量傳輸數(shù)據(jù),從而提高數(shù)據(jù)傳輸?shù)男仕兄噶疃伎梢愿鶕?jù)前面指令執(zhí)行的結(jié)果,決定是否執(zhí)行,以提高指令執(zhí)行的效率1.2ARM體系結(jié)構(gòu)的版本及命名方法迄今為止
2、,ARM體系結(jié)構(gòu)共定義了6個版本,版本號分別為16.從版本1到版本6,ARM體系的指令功能不斷擴大,同時,各版本中還有一些變種,這些變種定義了該版本指令集中不同的功能。ARM處理器系類中的各種處理器,其采用的實現(xiàn)技術(shù)各不相同,性能差別很大,應(yīng)用場合也有所不同,但是只要它們支持相同的ARM體現(xiàn)版本,基于它們的應(yīng)用軟件將是兼容的。1.2.1 ARM體系結(jié)構(gòu)的版本1. 版本1本版本在ARM1中實現(xiàn),但沒有在商業(yè)產(chǎn)品中使用。它包括下列指令:處理乘法指令之外的基本數(shù)據(jù)處理指令基于字節(jié),字,多字的讀取和寫入指令(Load/Store)包括子程序調(diào)用指令BL在內(nèi)的跳轉(zhuǎn)指令供操作系統(tǒng)使用的軟件中斷指令SWI本
3、版本中地址空間是26位,目前已經(jīng)不再使用2. 版本2與版本1相比,版本2增加了下列指令:乘法指令和乘加法指令支持協(xié)處理器的指令對于FIQ模式,提供了額外的兩個備份寄存器SWP指令及SWPB指令本版本中地址空間是26位,目前已經(jīng)不再使用3. 版本3版本3較以前的版本發(fā)生了比較大的變化。主要改進部分如下:處理器的地址空間擴展到了32位,但除了版本3G外的其他版本是向前兼容的,支持26位的地址空間。當(dāng)前程序狀態(tài)信息從原來的R15寄存器移到一個新的寄存器中,新的寄存器名字為CPSR(CurrentProgramStatusRegisterr當(dāng)前狀態(tài)寄存器)增加了SPSR(SavedProgramSta
4、tusRegister備份的程序狀態(tài)寄存器),用于在程序異常中斷程序時,保存被中斷的程序的程序狀態(tài)增加了兩種處理器模式,使操作系統(tǒng)代碼可以方便地使用數(shù)據(jù)訪問中止異常,指令預(yù)取中止異常和未定義指令異常增加了指令MRS和指令MSR,用于訪問CPSR寄存器和SPSR寄存器修改了原來的從異常中返回的指令4. 版本4與版本3相比,版本4增加了下列指令:半字的讀取和寫入指令讀?。↙oad)帶符號的字節(jié)和半字?jǐn)?shù)據(jù)的指令增加了T變種,可以使處理器狀態(tài)切換到Thumb狀態(tài),在該狀態(tài)下指令集是16位的Thumb指令集增加了處理器的特權(quán)模式。在該模式下,使用的是用戶模式下的寄存器。另外,在版本4中明確定義了哪些指令
5、會引起未定義指令異常。版本4不再強調(diào)要求與以前的26位地址空間兼容。5. 版本5與版本4相比,版本5增加或者修改了下列指令:提高了T變種中ARM/Thumb混合使用的效率對于T變種的指令和非T變種的指令使用相同的代碼生成技術(shù)同時,版本5還具有以下的特點增加了前導(dǎo)零指令,該指令可以使整數(shù)除法和中斷優(yōu)先級排隊操作更為有效增加了軟件斷點指令為協(xié)處理器設(shè)計提供更多的可選擇的指令更加嚴(yán)格的定義了乘法指令對條件標(biāo)志位的影響6. 版本6ARM體系版本6是2001年發(fā)布的。其主要特點是增加了SIMD功能擴展。它適合使用電池供電的高性能便攜式設(shè)備。這些設(shè)備一方面需要處理器提供高性能,另一方面又需要功耗很低。SI
6、MD功能擴展為包括音頻/視頻處理在內(nèi)的應(yīng)用系統(tǒng)提供了優(yōu)化功能。它可以使音頻/視頻處理性能提高4倍。ARM體系版本6首先在2002年春季發(fā)布的ARM11處理器中使用1.2.2 ARM體系的變種這里將某種特定功能稱為ARM體系的某種變種,例如支持Thumb指令集稱為T變種。目前ARM定義了一些變種。1、 Thumb指令集(T變種)Thumb指令集是將ARM指令集的一個子集重新編碼而形成的一個指令集。ARM指令長度為32位,Thumb指令長度為16位。這樣,使用Thumb指令集得到密度更高的代碼,這對于需要嚴(yán)格控制成本的設(shè)計是非常有意義的。與ARM指令集相比,Thumb指令集具有以下局限:完成相同的
7、操作,Thumb指令通常需要更多的指令。因此,在對系統(tǒng)運行時間要求苛刻的應(yīng)用場合,ARM指令集更為合適。Thumb指令集沒有包含進行異常處理時需要的一些指令,因此在異常中斷的低級處理時,his需要使用ARM指令。這種限制決定了Thumb指令需要和ARM指令配合使用。對于支持Thumb指令的ARM體系版本,使用符號T來表示目前Thumb指令集具有以下兩個版本:Thumb指令集版本1本版本用于ARM體系版本4的T變種。Thumb指令集版本2本版本用于ARM體系版本5的T變種與版本1相比,Thumb指令集的版本2具有以下特點:通過增加指令和對已有指令的修改,提高ARM指令和Thumb指令混合使用時的
8、效率增加了軟件斷點指令更加嚴(yán)格地定義了Thumb乘法指令對條件標(biāo)志位的影響這些特點和ARM體系版本4到版本5進行的擴展密切相關(guān)。實際上,通常并不使用Thumb版本號,而是使用相應(yīng)的ARM版本號。2、 Thumb指令集(T變種)M變種增加了兩條用于進行長乘法操作的ARM指令。其中一條指令用于實現(xiàn)32為整數(shù)乘以32位整數(shù),生成64位整數(shù)的長乘法操作;另一條指令用于實現(xiàn)32位整數(shù)乘以32位整數(shù),然后加上32位整數(shù),生成64位整數(shù)的長乘加操作。在需要這種長乘法的應(yīng)用場合M變種很適合然而,在有些應(yīng)用場合中,乘法操作的性能并不重要,但對于尺寸要求很苛刻,在系統(tǒng)實現(xiàn)時就不合適增加M變種的功能。M變種首先在A
9、RM體系版本3中加入。如果沒有上訴的設(shè)計方面的限制,在ARM體系版本4以及其后的版本中,M變種是系統(tǒng)的標(biāo)準(zhǔn)部分。對于支持長乘法ARM指令的ARM體系版本,使用字符M來表示。3、增強型DSP指令(E變種)E變種包含了一些附加的指令,這些指令用于增強處理器對一些典型的DSP算法的處理性能。主要包括:幾條新的實現(xiàn)16位數(shù)據(jù)乘法和乘加法操作的指令實現(xiàn)飽和的帶符號的加減法操作的指令。所謂飽和的加減法操作是在加減法操作溢出時,結(jié)果并不進行卷繞,而是使用最大的整數(shù)或者最小的負(fù)數(shù)來表示。進行雙字?jǐn)?shù)據(jù)操作的指令,包括雙字讀取指令LDRD,雙字寫入指令STRD和些處理器的寄存器傳輸指令MCRR/MRRC.Cach
10、e預(yù)取指令PLDE變種首先在ARM體系版本5T中使用,用符號E表示。在ARM體系版本5以前的版本中,以及在非M變種和非T變種的版本中,E變種是無效的。在早期的一些E變種中,未包含雙字的讀取指令LDRD,雙字的寫入指令STRD,協(xié)處理器的寄存器傳輸指令MCRR/MRRC以及cache預(yù)取指令PLD。這種E變種記作ExP,其中x表示缺少,P代表上訴的集中指令。4、 Java加速器Jazelle(J變種)ARM的Jazelle技術(shù)將Java的優(yōu)勢和先進的32位RISC芯片完美的結(jié)合在一起。Jazelle技術(shù)提供了Java加速功能,可以得到比普通Java虛擬機高得多的性能。與普通的Java虛擬機相比,
11、Jazelle使Java運行速度提高了8倍,而功耗降低了80%。Jazelle技術(shù)使得程序員可以在一個單獨的處理器上同時運行Java應(yīng)用程序,已經(jīng)建立好的操作系統(tǒng),中間件以及其他的應(yīng)用程序。與使用協(xié)處理器和雙處理器相比,使用單獨的處理器可以在提高性能的同時,保證低功耗和低成本。J變種首先在ARM體系版本4TEJ中使用,用符號J表示J變種。5、 ARM媒體功能擴展(SIMD變種)ARM媒體功能擴展為嵌入式應(yīng)用系統(tǒng)提供了高性能的音頻/視頻處理技術(shù)。新一代的Internet應(yīng)用系統(tǒng),移動電話和PDA等設(shè)備需要提供高性能的流式媒體,包括音頻和視頻等;而且這些設(shè)備需要提供更加人性化的界面,包括語音識別和
12、手寫輸入識別等。這樣,就要求處理器能夠提供很強的數(shù)字信號處理能力,同時還必須保持低功耗,以延長電池的使用時間。ARM的SIMD媒體功能擴展就為這些應(yīng)用系統(tǒng)提供了解決方案。它為包括音頻/視頻處理在內(nèi)的應(yīng)用系統(tǒng)提供了優(yōu)化功能,它可以使音頻/視頻處理性能提高4倍。主要特點如下:將音頻/視頻處理能力提高了24倍可以同時進行兩個26位操作數(shù)或者4個8位操作數(shù)的運算提供了小數(shù)算術(shù)運算用戶可以定義飽和運算的模式兩套16位操作數(shù)的乘加/乘減運算32位乘以32位小數(shù)MAC同時8位/16位選擇操作它的主要應(yīng)用領(lǐng)域包括:Internet應(yīng)用系統(tǒng)流式媒體應(yīng)用系統(tǒng)MPEG4編碼/解碼系統(tǒng)語音和手寫輸入識別FFT處理復(fù)雜
13、的算術(shù)運算Viterbi處理。1.2.3ARM/Thumb體系版本的命名格式表示ARM/Thumb體系版本的字符串是由下面幾部分組成的:字符串ARMvARM指令集版本號。目前是16的數(shù)字字符表示變種的字符。由于在ARM體系版本4以后,M變種成為系統(tǒng)的標(biāo)準(zhǔn)功能,字符M通常不需要列出來。使用字符x表示排除某種寫功能。比如,在早期的一些E變種中,未包含雙字讀取指令LDRD,雙字寫入指令STRD,協(xié)處理器的寄存器傳輸指令MCRR/MRRC以及cache預(yù)取指令PLD。這種E變種記作ExP,其中x表示缺少,P代表上訴的幾種指令。目前有效的ARM/Thumb體系版本名稱以及其含義如表1.1和表1.2中所列
14、。這些名稱描述了各版本的具體特點。表1.1目前有效的ARM/Thumb體系版本名稱及其含義名稱ARM指令集版本號Thumb指令集版本號M變種E變種ARMv33無否否ARMv3M3無是否ARMv4xM4無否否ARMv44無是否ARMv4TxM41否否ARMv4T41是否ARMv5xM5無否否ARMv55無是否ARMv5TxM52否否ARMv5T52是否ARMv5TexP52是處理LDRDMCRR,MRRCPLD,STRD指令外的指令A(yù)RMv5TE52是是表1.2目前有效的ARM/Thumb體系版本名稱以及含義(續(xù))名稱T變種E變種J變種SIMD變種ARMv5TEJ是是是否ARMv6是是是是1.3
15、 ARM處理器系列ARM處理器目前包括下面的幾個系列的處理器產(chǎn)品已經(jīng)其他廠商實現(xiàn)的基于ARM體系結(jié)構(gòu)的處理器。ARM7系列ARM9系列ARM9E系列ARM10E系列SecurCore系列Intel的XscaleInter的StrongARM這些處理器最高主頻達到了800MIPS,功耗數(shù)量級為Mw/MHz。對于支持同樣ARM體系版本的處理器,其軟件是兼容的。這些處理器廣泛應(yīng)用于以下領(lǐng)域:開放應(yīng)用平臺包括無線系統(tǒng),消費產(chǎn)品以及成像設(shè)備等實現(xiàn)嵌入式應(yīng)用包括存儲設(shè)備,汽車,工業(yè)和網(wǎng)絡(luò)設(shè)備安全系統(tǒng)包括信用卡和SIM卡1.3.1 ARM7系列ARM7系列處理器是低功耗的32位RISC處理器。它主要用于對功
16、耗和成本要求比較苛刻的消費類產(chǎn)品。其最高主頻可以達到130MIPS。ARM7系列處理器支持16位的Thumb指令集,使用Thumb指令集可以以16位的系統(tǒng)開銷得到32位的系統(tǒng)性能。ARM7系列包括ARM7TDMI,ARM7TDMI-S,ARM7EJ-S和ARM720T4種類型,主要用于適應(yīng)不同的市場需求。ARM7系類處理器具體應(yīng)用于以下場合:個人音頻設(shè)備(MP3播放器,WMA播放器,AAC播放器)接入級的無線設(shè)備噴墨打印機數(shù)字照相機PDAARM7系類處理器覺有以下主要特點:成熟的大批量的32位RISC芯片最高主頻達到130MIPS功耗很低代碼密度很高,兼容16位的微處理器得到廣泛的操作系統(tǒng)和實
17、時操作系統(tǒng)支持,包括windowsCE,PalmOS,SymbianOS,Linux以及業(yè)界領(lǐng)先的實時操作系統(tǒng)。眾多的開發(fā)工具EDA仿真模型優(yōu)秀的調(diào)試機制業(yè)界眾多領(lǐng)先的IC制造商生產(chǎn)這類芯片提供0.25um,0.18um,及0.13um的生產(chǎn)工藝代碼與ARM9系類,ARM9E,ARM10E兼容。1.3.2 ARM9系列ARM9系列處理器使用ARM9TDMI處理器核,其中包含了16位的Thumb指令集。使用Thumb指令集可以以16位的系統(tǒng)開銷得到32位的系統(tǒng)性能。ARM9系列包括ARM920T,ARM922T和ARM940T三種類型,用于適應(yīng)不同的市場需求。ARM9系列處理器具體應(yīng)用在以下場合
18、:下一代的無線設(shè)備,包括視頻電話和PDA等數(shù)字消費品,包括機頂盒,家庭網(wǎng)關(guān),MP3播放器和MPEG4播放器等成像設(shè)備,包括打印機,數(shù)字照相機和數(shù)字?jǐn)z像機等。汽車,通信和信息系統(tǒng)ARM9E系列處理器具有以下主要特點:支持32位的ARM指令集和16位的Thumb指令集的32位RISC處理器五級整數(shù)流水線單一的32位AMBA總線接口MMU支持WindowCE,PalmOS,SymbianOS,Linux等MPU支持實時操作系統(tǒng),包括Vxworks統(tǒng)一的數(shù)據(jù)cache和指令cache提供0.18um,0.15um及0.13um的生產(chǎn)工藝1.3.3 ARM9E系列ARM9E系列處理器使用單一的處理器內(nèi)核
19、提供了微控制器,DSP,Java應(yīng)用系統(tǒng)的解決方案,從而極大的減小了芯片的大小以及復(fù)雜程度,降低了功耗,縮短了產(chǎn)品面世時間。ARM9E系列處理器提供了增強的DSP處理能力,非常適合那些需要同時使用DSP和微控制器的應(yīng)用場合。其中的ARM926EJ-S包含了Jazelle技術(shù),可以通過硬件直接運行Java代碼,提高了系統(tǒng)運行Java代碼的性能。ARM9E系歹U包括ARM926EJ-S,ARM946E-S和ARM966E-S三種類型,用于適應(yīng)不同的市場需求。ARM9E系列處理器具體應(yīng)用在以下場合:下一代的無線設(shè)備,包括視頻電話和PDA等數(shù)字消費品,包括機頂盒,家庭網(wǎng)關(guān),MP3播放器和MPEG4播放
20、器等成像設(shè)備,包括打印機,數(shù)字照相機和數(shù)字?jǐn)z像機等。存儲設(shè)備,包括DVD和HDD等工業(yè)控制,包括馬達控制和能量控制等汽車,通信和信息系統(tǒng)的ABS和車體控制等網(wǎng)絡(luò)設(shè)備,包括VoIP,WirelessLAN,xDSL等ARM9E系列處理器具有以下主要特點:支持32位的ARM指令集和16位的Thumb指令集的32位RISC處理器包括了DSP指令集五級整數(shù)流水線在典型的0.13um工藝下,主頻可以達到300MIPS的性能集成的實時跟蹤和調(diào)試功能單一的32位AMBA總線接口可選的VFP9浮點處理協(xié)處理器在實時控制和三維圖像處理時主頻可達到215MFLOPS高性能的AHB系統(tǒng)MMU支持WindowCE,P
21、almOS,SymbianOS,Linux等MPU支持實時操作系統(tǒng),包括Vxworks統(tǒng)一的數(shù)據(jù)cache和指令cache提供0.18um,0.15um及0.13um的生產(chǎn)工藝1.3.4 ARM10E系列ARM10E系列處理器有高性能和低功耗的特點。它所采用的新的體系使其在所有ARM產(chǎn)品中具有最高的MIPS/MHz。ARM10E系列處理器采用了新的節(jié)能模式,提供了64位的讀取/寫入(Load/Store)體系,支持包括向量操作的滿足IEEE754的浮點運算協(xié)處理器,系統(tǒng)集成更加方便,擁有完整的硬件和軟件可開發(fā)工具。ARM10E系列包括ARM1020E,ARM1022E,ARM1026EJ-S三
22、種類型,主要用于適應(yīng)不同的市場需求。ARM10E系列處理器具體應(yīng)用于以下場合:下一代的無線設(shè)備,包括視頻電話,PDA,筆記本電腦和Internet設(shè)備等數(shù)字消費品,包括機頂盒,家庭網(wǎng)關(guān),MP3播放器和MPEG4播放器等成像設(shè)備,包括激光打印機,數(shù)字照相機和數(shù)字?jǐn)z像機等工業(yè)控制,包括馬達控制和能量控制等汽車,通信和信息系統(tǒng)等ARM10E系列處理器具有以下主要特點:支持32位的ARM指令集和16位的Thumb指令集的32位RISC處理器。包括了DSP指令集六級整數(shù)流水線在典型的0.13um工藝下,主頻可以達到400MIPS的性能單一的32位AMBA總線接口可選的VFP10浮點處理協(xié)處理器在實時控制
23、和三維圖像處理時主頻可達到650MFLOPS高性能的AHB系統(tǒng)MMU支持windowCE,PalmOS,SymbianOS,Linux等統(tǒng)一的數(shù)據(jù)cache和指令cache提供0.18um,0.15um,0.13um的生產(chǎn)工藝并行讀取/寫入部件1.3.5 SecurCore系列SecurCore系列處理器提供了基于高性能的32位RISC技術(shù)的安全解決方案。SecurCore系列處理器具有體積小,功耗低,代碼密度大和性能高等特點外,還具有它自己的特別優(yōu)勢,即提供了安全解決方案的支持。SecurCore系列處理器具有以下特點:支持ARM指令集和Thumb指令集,以提高代碼密度和系統(tǒng)性能。采用軟內(nèi)核
24、技術(shù),以提供最大限度的靈活性,以及防止外部對其進行掃描探測。提供了安全特性,抵制攻擊提供面向智能卡的和低成本的存儲保護單元MUP可以集成用戶自己的安全特性和其他的協(xié)處理器SecurCore系列包括SecurCoreSC10O,SecurCoreSC110,SecurCoreSC200和SecurCoreSC210四種類型,主要用于適應(yīng)不同的市場需求。SecurCore系列處理器主要應(yīng)用于一些安全產(chǎn)品及應(yīng)用系統(tǒng),包括電子商務(wù),電子銀行業(yè)務(wù),網(wǎng)絡(luò),移動媒體和認(rèn)證系統(tǒng)等。1.4 ARM處理器系列ARM共有7種運行模式,如表1.3所示。表1.3ARM處理器的7種運行模式處理器模式描述用戶模式正常程序執(zhí)
25、行的模式快速中斷模式用于告訴數(shù)據(jù)傳輸和通道處理外部中斷模式用于通常的中斷處理特權(quán)模式供操作系統(tǒng)使用的一種保護模式數(shù)據(jù)訪問中止模式用于虛擬存儲及存儲保護未定義指令中止模式用于支持通過軟件仿真硬件的協(xié)處理器系統(tǒng)模式用于運行特權(quán)級的操作系統(tǒng)任務(wù)除了用戶模式之外的其他6種處理器模式稱為特權(quán)模式,在這些模式下,程序可以訪問所有的系統(tǒng)資源,也可以任意地進行處理器模式的切換。其中除系統(tǒng)模式外,其他5種特權(quán)模式又稱為異常模式。處理器模式可以通過軟件控制進行切換,也可以通過外部中斷或者異常處理過程進行切換。大多數(shù)的用戶程序運行在用戶模式下。這時,應(yīng)用程序不能夠訪問一些受操作系統(tǒng)保護的系統(tǒng)資源。應(yīng)用程序也不能直接
26、進行處理器模式的切換。當(dāng)需要進行處理器模式切換時,應(yīng)用程序可以產(chǎn)生異常處理,在異常處理過程中進行處理器模式的切換。這種體系結(jié)構(gòu)可以使操作系統(tǒng)控制整個系統(tǒng)的資源。當(dāng)應(yīng)用程序發(fā)生異常中斷時,處理器進入相應(yīng)的異常模式。在每一種異常陌生中都有一組寄存器,供相應(yīng)的異常處理程序使用,這樣就可以保護在進入異常模式時,用戶模式下的寄存器不被破壞。系統(tǒng)模式并不是通過異常過程進入的,它和用戶模式具有完全一樣的寄存器。但是系統(tǒng)模式屬于特權(quán)模式,可以訪問所有的胸資源,也可以直接進行處理器模式切換。它主要供操作系統(tǒng)任務(wù)使用。通常操作系統(tǒng)的任務(wù)需要訪問所有的系統(tǒng)資源,同時該任務(wù)仍然使用用戶模式的寄存器組,而不是使用異常模
27、式下相應(yīng)的寄存器組,這樣可以保證當(dāng)異常中斷發(fā)生時任務(wù)狀態(tài)不被破壞。1.5 ARM寄存器介紹ARM處理器共有37個寄存器。其中包括:31個通用寄存器,包括程序計數(shù)器(PC)在內(nèi),這些寄存器都是32位寄存器6個狀態(tài)寄存器。這些寄存器都是32位寄存器,但目前只適用了其中12位。ARM處理器共有7種不同的處理器模式,在每一種處理器模式中有一組相應(yīng)的寄存器組。任意時刻(也就是任意的處理器模式下),可見的寄存器包括15個通用寄存器(R0R14),一個或者兩個狀態(tài)寄存器及程序計數(shù)器。在所有的寄存器中,有些是各模式共用的同一個物理寄存器;有一些寄存器是各模式自己擁有的獨立的物理寄存器。表1.4列出了各處理器模
28、式下可見的寄存器情況。表1.4各種處理器模式下的寄存器用戶模式系統(tǒng)模式特權(quán)模式中止模式未定義指令模式外部中斷模式快速中斷模式R0R0R0R0R0R0R0R1R1R1R1R1R1R1R2R2R2R2R2R2R2R3R3R3R3R3R3R3R4R4R4R4R4R4R4R5R5R5R5R5R5R5R6R6R6R6R6R6R6R7R7R7R7R7R7R7R8R8R8R8R8R8R8_FIQR9R9R9R9R9R9R9_FIQR10R10R10R10R10R10R10_FIQR11R11R11R11R11R11R11_FIQR12R12R12R12R12R12R12_FIQR13R13R13_svcR1
29、3_abtR13_undR13_irqR13_FIQR14R14R14_svcR14_abtR14_undR14_irqR14_FIQPCPCPCPCPCPCPCCPSRCPSRCPSRCPSRCPSRCPSRCPSRSPSR_svcSPSR_abtSPSR_undSPSR_irqSPSR_FIQ1.5.1通用寄存器通用寄存器可以分為下面3類:未備份的寄存器,包括R0R7備份寄存器,包括R8R14程序計數(shù)器PC,即R151、未備份寄存器未備份寄存器包括R0R7,對于每一個未備份寄存器來說,在所有的處理器模式下指的都是同一個物理寄存器。在異常中斷造成處理器模式切換時,由于不同的處理器模式使用相同
30、的物理寄存器,可能造成寄存器數(shù)據(jù)被破壞。未備份寄存器沒有被系統(tǒng)用于特別的用途,任何可采用通用寄存器的應(yīng)用場合都可以使用未備份寄存器。2、備份寄存器對于備份寄存器R8R12來說,每個寄存器對應(yīng)兩個不同的物理寄存器。例如,當(dāng)使用快速中斷模式下的寄存器時,寄存器R8和寄存器R9分別記作R8_FIQ,R9_FIQ;當(dāng)使用用戶模式下的寄存器時,寄存器R8和寄存器R9分別記作R8_usr,R9_usr等。在這兩種情況下使用的是不同的物理寄存器,系統(tǒng)沒有將這幾個寄存器用于任何的特殊用途,但是當(dāng)中斷處理非常簡單,僅僅使用R8R14寄存器時,F(xiàn)IQ處理程序可以不必執(zhí)行保存和恢復(fù)中斷現(xiàn)場的指令,從而可以使中斷處理
31、過程非常迅速。對于備份寄存器R13和R14來說,每個寄存器對應(yīng)6個不同的物理寄存器,其中的一個是用戶模式下和系統(tǒng)模式共用的;另外5個對應(yīng)的其他5種處理器模式。采用下面的記號來區(qū)分各個物理寄存器:R13_<mode>其中<mode>可以是下面幾種模式之一:usr,svc,abt,und,irq及fiq寄存器R13在ARM中常用作棧指針。在ARM指令集中,這只是一種習(xí)慣的用法,并沒有任何指令強制的使用R13作為棧指針,用戶也可以使用其他的寄存器作為棧指針,而在Thumb指令集中,有一些指令強制性的使用R13作為棧指針。每一種異常模式擁有自己的物理的R13.應(yīng)用程序初始化該R
32、13,使其指向該異常模式專用的棧地址。當(dāng)進入異常模式時,可以將需要使用的寄存器保存在R13所指的棧中;當(dāng)退出異常模式處理程序時,將保存在R13所指的棧中的寄存器值彈出,這樣就使異常處理程序不會被破壞其中斷程序的運行現(xiàn)場。寄存器R14又被稱為連續(xù)寄存器,在ARM體系中具有下面兩種特殊作用:每一種處理器模式自己的物理R14中存放在當(dāng)前子程序的返回地址。當(dāng)通過BL或者BLX指令調(diào)用子程序時,R14被設(shè)置成該子程序的返回地址。在子程序中,當(dāng)把R14的值復(fù)制到程序計數(shù)器PC中是,子程序即返回??梢酝ㄟ^下面兩種方式實現(xiàn)這種子程序的返回操作。執(zhí)行下面任何一條指令:movPC,LRbxLR在子程序入口使用下面
33、的指令將PC保存到棧中stmfdSP!,<registers>,LR相應(yīng)的,下面的指令可以實現(xiàn)子程序的返回:jdmfdSP!,<registers>,PC當(dāng)異常中斷發(fā)生時,該異常模式特定的物理R14被設(shè)置成該異常模式將要返回的地址,對于有些異常模式,R14的值可能與將返回的地址有一個常數(shù)的偏移量。具體的返回方式與上面的子程序返回方式基本相同。R14寄存器也可以作為通用寄存器使用。3、程序計數(shù)器R15程序計數(shù)器R15又被記作PC。它雖然可以作為一般的通用寄存器使用,但是有一些指令在使用R15時有一些限制。當(dāng)違反了這些限制時,該指令執(zhí)行的結(jié)果將是不可預(yù)料的。由于ARM采用的
34、流水線機制,當(dāng)正確讀取了PC的值時,該值為當(dāng)前指令地址值加一個字節(jié)。也就是說,對于ARM指令集來說,PC指向當(dāng)前指令的下兩條指令的地址,由于ARM指令是字對齊的,PC值的第0位和第1位總是為0。需要注意的是,當(dāng)使用指令STR/STM保存R15時,保存的可能是當(dāng)前指令地址加8字節(jié),也可能保存的是當(dāng)前指令地址加12字節(jié)。到底是哪種方式,取決于芯片具體的設(shè)計方式。無論如何,在同一芯片中,要么采用當(dāng)前指令地址加8,要么采用當(dāng)前指令地址加12,不能有些指令采用當(dāng)前指令地址加8,另一些指令采用當(dāng)前指令地址加12。因此對于用戶來說,盡量避免使用STR/STM指令來保存R15的值。當(dāng)不可避免這種使用方式時,可
35、以先通過一些代碼來確定所用的芯片使用的是哪種實現(xiàn)方式。假設(shè)R0指向可用的一個內(nèi)存字,下面的代碼可以在R0指向的內(nèi)存字中返回該芯片所采用的地址偏移量subR1,PC,#4STRPC,R0LDRR0,R0SUBR0,R0,R1在上面的討論中,都是針對指令返回的值。該值并非在指令讀取期間出現(xiàn)在數(shù)據(jù)總線上的值。在指令讀取期間出現(xiàn)在數(shù)據(jù)總線上的值取決于芯片的具體實現(xiàn)方式。當(dāng)成功的像R15中寫入一個地址數(shù)值時,程序?qū)⑻D(zhuǎn)到該地址執(zhí)行。由于ARM指令是字對齊的,寫入R15的地址應(yīng)該滿足bits1:0=0b00,具體要求ARM各版本有所不I對于ARM版本3以及更低的版本,寫入R15地址值的bits1:0被忽略
36、,即寫入R15的地址值將與OxFFFFFFFC做與操作。對于ARM版本4以及更高版本,程序必須保證寫入R15寄存器的地址值bits1:0為0b00;否則將會產(chǎn)生不可預(yù)知的結(jié)果。對于Thumb指令來說,指令是半字對齊的。處理器將忽略bit0,即寫入R15的地址值首先與0xfffffffe做與操作,再寫入R15中。還有一些指令對于R15的用法有一些特殊的要求,比如指令BX利用bit1來確定是ARM指令,還是Thumb指令。這種讀取PC值和寫入PC值的不對稱操作需要特別注意。這一點在以后的章節(jié)還會介紹。如指令MOVPC,PC將程序跳轉(zhuǎn)到當(dāng)前指令下面的第2條指令處執(zhí)行。因為指令中,第二個PC寄存器讀出
37、的值為當(dāng)前指令的地址加8,這樣對于這樣ARM指令而言寫入PC寄存器的是當(dāng)前指令下面的第2條指令的地址。類似的指令還有ADDPC,PC,#0。1.5.3程序狀態(tài)寄存器CPSR可以在任何處理器模式下被訪問。它包含了條件標(biāo)志位,中斷禁止位,當(dāng)前處理器模式標(biāo)志位以及其他的一些控制和狀態(tài)位。每一種處理器模式下都有一個專用的物理狀態(tài)寄存器,稱為SPSRo當(dāng)特定的異常中斷發(fā)生時,這個寄存器用于存放當(dāng)前程序狀態(tài)寄存器的內(nèi)容。在異常中斷程序退出時,可以用SPSR重保存的值來恢復(fù)CPSR。由于用戶模式和系統(tǒng)模式不是異常中斷模式,所以它們沒有SPSRo當(dāng)在用戶模式或者系統(tǒng)模式中訪問SPSR,將會產(chǎn)生不可預(yù)知的結(jié)果。
38、CPSR的格式如下所示,SPSR格式與CPSR格式相同。NZCVQDNM(RAZ)IFTM4M3M2M1M01、條件標(biāo)志位N,乙C,及V統(tǒng)稱為條件標(biāo)志位,大部分的ARM指令可以根據(jù)CPSR中的這些條件標(biāo)志位來選擇性的執(zhí)行。各條件標(biāo)志位的具體含義如表1.5所示。表1.5CPSR中的條件標(biāo)志位標(biāo)志位含義N本位設(shè)置成當(dāng)前指令運算結(jié)果的bit31的值當(dāng)兩個補碼表示的有符號整數(shù)運算時,N=1表示運算結(jié)果為負(fù)數(shù);N=0表示結(jié)果為正數(shù)或者零ZZ=1表示的結(jié)果為零;Z=0表示的運算結(jié)果不為零。C下面分四種情況討論C的設(shè)置方法:在加法指令中(包括)比較指令CMN,當(dāng)結(jié)果產(chǎn)生了進位,則C=1,表示無符號數(shù)運算發(fā)生
39、了溢出,其他情況下C=0在減法指令中(包括比較指令CMP),當(dāng)運算中發(fā)生借位,則C=0,表示無符號數(shù)運算發(fā)生溢出,其他情況下C=1對于包含移位操作的非加減運算指令,C中包含最后一次被溢出的數(shù)值對于其他非加減運算指令,C位的值通常不受影響V對于加減運算指令,當(dāng)操作室和運算結(jié)果為二進制的補碼表示的帶符號數(shù)時,V=1表示符號位溢出通常情況下其他指令不影響V位,具體可參考各指令的說明以下指令會影響CPSR中的條件標(biāo)志位:比較指令,如CMP,CMN,TEQ和TST等。當(dāng)一些算術(shù)指令和邏輯指令的目標(biāo)寄存器不受R15時,這些指令會影響CPSR中的條件標(biāo)志位MSR指令向CPSR/SPSR中寫入新值MRC指令將
40、R15作為目標(biāo)寄存器時,可以把協(xié)處理器產(chǎn)生的條件標(biāo)志位的值送到ARM處理器一些LDM指令的變種指令可以將SPSR的值復(fù)制到CPSR中,這種操作主要用于異常中斷程序中返回一些帶“位”的算術(shù)和邏輯指令的變種指令,也可以將SPSR的值復(fù)制到CPSR中,這種操作主要用于從異常中斷程序中返回2、 Q標(biāo)志位在ARMv5的E系列處理器中,CPSR的bit27稱為Q標(biāo)志位,主要用于指示增強的DSP指令是否發(fā)生了溢出。同樣的SPSR中的bit27也稱為Q標(biāo)志位,用于在異常中斷發(fā)生時保存和恢復(fù)CPSR中的Q標(biāo)志位。在ARMv5以前的版本及ARMv5的非E系列的處理器中,Q標(biāo)志位沒有被定義。CPSR的bit27屬于
41、DNM(RAZ)3、 CPSR中的控制位CPSR的低8位I,F(xiàn),T,及M4:0統(tǒng)稱為控制位。當(dāng)異常發(fā)生中斷時這些位發(fā)生變化。在特權(quán)級的處理器模式下,軟件可以修改這些控制位中斷禁止位當(dāng)I=1時禁止IRQ中斷當(dāng)F=1時禁止FIQ中斷T控制位T控制位用于控制指令執(zhí)行的狀態(tài),即說明本指令是ARM指令,還是Thumb指令。對于不同版本的ARM處理器,T控制位的含義不同對于ARMv3以及更低版本的ARMv4的非T系列版本的處理器,沒有ARM狀態(tài)和Thumb狀態(tài)切換,T控制位應(yīng)為0對于ARMv4以及更高版本的T系列的ARM處理器,T控制位含義如下:T=0表示執(zhí)行ARM指令T=1表示執(zhí)行Thumb指令對于AR
42、Mv5以及更高的版本的非T系列的ARM處理器,T控制位含義如下:T=0表示執(zhí)行ARM指令T=1表示強制下一條執(zhí)行的指令產(chǎn)生未定義指令中斷M控制位控制位M4:0控制位處理器模式,具體含義如表1.6所示。表1.6控制位M4:0的含義M4:0處理器模式可訪問的寄存器0b10000UserPC,R14R0,CPSR0b10001FIQPC,R14_fiqR8_fiq,R7R0,CPSR,SPSR_fiq0b10010IRQPC,R14_irqR13_irq,R12R0,CPSR,SPSR_irq0b10011SupervisorPC,R14_svcR13_svc,R12R0,CPSR,SPSR_svc
43、0b10111AbortPC,R14_abtR13_abt,R12R0,CPSR,SPSR_abt0b11011UndefinedPC,R14_undR13_und,R12R0,CPSR,SPSR_und0b11111SystermPC,R14R0,CPSR(ARMv4及更局版本)4、CPSR的其他位CPSR中的其他位用于將來ARM版本的擴展。應(yīng)用軟件不要操作這些位,以免與ARM將來版本的擴展的沖突。1.6 ARM體系的異常中斷在ARM體系中通常有以下3種方式控制程序的執(zhí)行流程:在正常程序執(zhí)行過程中,沒執(zhí)行一條ARM指令,程序計數(shù)器的值加4個字節(jié),每執(zhí)行一條Thumb指令,程序計數(shù)器的值加兩個
44、字節(jié)。整個過程是按順序執(zhí)行通過跳轉(zhuǎn)指令,程序可以跳轉(zhuǎn)到特定的地址標(biāo)號處執(zhí)行,或者跳轉(zhuǎn)到特定子程序處執(zhí)行。其中,B指令用于執(zhí)行跳轉(zhuǎn)操作;BL指令在執(zhí)行跳轉(zhuǎn)操作的同時,保存子程序的返回地址;BX指令在執(zhí)行跳轉(zhuǎn)操作的同時,根據(jù)目標(biāo)地址的最低位可以將程序狀態(tài)切換到Thumb狀態(tài);BLX指令執(zhí)行3個操作,跳轉(zhuǎn)到目的地址處執(zhí)行,保存子程序的返回地址,根據(jù)目標(biāo)地址的最低位可以將程序狀態(tài)切換至ijThumb當(dāng)異常中斷發(fā)生時,系統(tǒng)執(zhí)行完當(dāng)前指令后,將跳轉(zhuǎn)到相應(yīng)的異常中斷處理程序處執(zhí)行。在當(dāng)異常中斷處理程序執(zhí)行完成后,程序返回到發(fā)生中斷的指令的下一條指令處執(zhí)行。在進入異常中斷處理程序時,要保存被中斷的程序的執(zhí)行現(xiàn)
45、場,在異常中斷處理程序退出時,要恢復(fù)被中斷的程序的執(zhí)行現(xiàn)場。本章討論ARM體系中的異常中斷機制。1.6.1 ARM中異常中斷種類ARM體系中的異常中斷如表1.7所示。各種異常中斷對具有各自的備份寄存器組,在本章前面已經(jīng)有了比較詳細(xì)的介紹,這里不再重復(fù)當(dāng)多個異常中斷同時發(fā)生時,可以根據(jù)各異常中斷的優(yōu)先級選擇響應(yīng)優(yōu)先級最高的異常中斷。關(guān)于異常中斷的優(yōu)先級將在第9章詳細(xì)介紹。表1.7ARM體系中的異常中斷異常中斷名稱含義復(fù)位當(dāng)處理器的復(fù)位引腳有效時,系統(tǒng)產(chǎn)生復(fù)位異常中斷,程序跳轉(zhuǎn)到復(fù)位異常中斷處理程序處執(zhí)行。復(fù)位異常中斷通常用在下面幾種情況下:系統(tǒng)加電時系統(tǒng)復(fù)位時跳轉(zhuǎn)到復(fù)位中斷向量處執(zhí)行,稱為軟中斷
46、未定義的指令當(dāng)ARM處理器或者是系統(tǒng)中的協(xié)處理器認(rèn)為當(dāng)前指令未定義時,產(chǎn)生未定義的指令異常中斷??梢酝ㄟ^該異常中斷機制仿真浮點向量運算軟件中斷這是一個由用戶定義的中斷指令??梢杂糜谟脩裟J较碌某绦蛘{(diào)用特權(quán)操作指令。在實時操作系統(tǒng)中可以通過該機制實現(xiàn)系統(tǒng)功能調(diào)用。指令預(yù)取中止如果處理器預(yù)取的指令地址不存在,或者該地址不允許當(dāng)前指令訪問,當(dāng)該被預(yù)取的指令執(zhí)行時,處理器產(chǎn)生指令預(yù)取中止異常中斷。數(shù)據(jù)訪問中止如果數(shù)據(jù)訪問指令的目的地址不存在,或者該地址不允許當(dāng)前指令訪問,處理器產(chǎn)生數(shù)據(jù)訪問中止異常中斷。外部中斷請求當(dāng)處理器的外部中斷請求引腳有效,而且CPSR寄存器的I控制位被清除時,處理器產(chǎn)生外部中斷
47、請求異常中斷。系統(tǒng)各外設(shè)通常通過該異常中斷請求處理器服務(wù)快速中斷請求當(dāng)處理器的外部快速中斷請求引腳有效,而且CPSR寄存器的F控制位被清除時,處理器產(chǎn)生外部中斷請求異常中斷1.6.2ARM中異常中斷種類ARM處理器對異常中斷的響應(yīng)過程如下所訴。保存處理器當(dāng)前狀態(tài),中斷屏蔽位以及各條件標(biāo)志位。這是通過將當(dāng)前程序狀態(tài)寄存器CPSR的內(nèi)容保存到將要執(zhí)行的異常中斷相應(yīng)的SPSR寄存器中實現(xiàn)的。各異常中斷有自己的物理SPSR寄存器。設(shè)置當(dāng)前程序狀態(tài)寄存器CPSR中相應(yīng)的位。包括:設(shè)置CPSR中的位,使處理器進入相應(yīng)的執(zhí)行模式;設(shè)置CPSR中的位,禁止IRQ中斷,當(dāng)進入FIQ模式時,禁止FIQ中斷將寄存器
48、lr_mode設(shè)置成返回地址將程序計數(shù)器,設(shè)置成該異常中斷的中斷向量地址,從而跳轉(zhuǎn)到相應(yīng)的異常中斷處理程序處處理上述的處理器對異常中斷的響應(yīng)過程可以用如下的偽代碼描述。R14_<exception_mode>=returnlinkSPSR_<exception_mode>=CPSRCPSR4:0=exceptionmodenumber/*當(dāng)運行于ARM狀態(tài)時*/CPSR5=0/*當(dāng)相應(yīng)FIQ異常中斷時,禁止新的FIQ中斷*/If<exception_mode>=ResetorFIQthenCPSR6=1/*禁止新的FIQ中斷*/CPSR7=1PC=excep
49、tionvectoraddress1.6.3 從異常中斷處理程序中返回從異常中斷處理程序中返回包括以下兩個基本操作:恢復(fù)被中斷的程序的處理器狀態(tài),即將SPSR_mode寄存器內(nèi)容復(fù)制到CPSR中。返回到發(fā)生異常中斷的指令的下一條指令處執(zhí)行,即將lr_mode寄存器的內(nèi)容復(fù)制到程序計數(shù)器中。復(fù)位異常中斷處理程序不需要返回。在復(fù)位異常中斷處理程序開始整個用戶程序的執(zhí)行,因而它不需要返回。實際上,當(dāng)異常中斷發(fā)生時,程序計數(shù)器所只的位置對于各種不同的異常中斷是不同的。同樣,返回地址對于各種不同的異常中斷也是不同的。1.7 ARM體系的異常中斷關(guān)于ARM體系的存儲系統(tǒng)在第5章有詳細(xì)的介紹。這里僅僅介紹A
50、RM編程模型中與存儲系統(tǒng)相關(guān)的一些概念。1.7.1 從異常中斷處理程序中返回ARM體系使用單一的平板地址空間。該地址空間的大小為2的32次方個8位字節(jié)。這些字節(jié)單元的地址是一個無符號的32位數(shù)字,其取值范圍為0到232-1.ARM的地址空間也可以看作是230個32位的字單元。這些字單元的地址可以被4整除,也就是說該地址的低兩位為0b00。地址為A的字?jǐn)?shù)據(jù)包括地址A,A+1,A+2,A+34個字節(jié)單元的內(nèi)容。在ARM版本4及以上的版本中,ARM的地址空間也可以看做的231個16位的半字。這些半字的地址可以被2整除,也就是說該地址的最低位為0b0.地址為A的半字?jǐn)?shù)據(jù)包括地址為A,A+1兩個字節(jié)單元
51、的內(nèi)容。各存儲單元的地址作為32位的無符號數(shù),可以進行常規(guī)的整數(shù)運算。這些運算的結(jié)果進行232取模。也就是說,運算結(jié)果發(fā)生上溢出和下溢出時,地址將會發(fā)生卷繞。1.7.2 ARM存儲器格式在ARM體系中,每個字單元中包含4個字節(jié)單元或者兩個半字單元;1個半字單元中包含兩個字單元。但是在字單元中,4個字節(jié)哪一個是高位字節(jié),哪一個是低位字節(jié),則有兩種不同的格式;big_endian格式和little_endian格式。在big_endian格式中,對于地址為A的字節(jié)單元包括字單元A,A+1,A+2,A+3,其中字節(jié)單元由高位到低位字節(jié)順序為A,A+1,A+2,A+3,地址為A的字單元包括半字單元A,
52、A+2,其中半字單元由高位到低位字節(jié)順序為A+2;地址為A的半字單元包括字節(jié)單元A,A+1,其中字節(jié)單元由高位到低位順序為A,A+1.這種存儲器格式如圖1.1 所示。在little_endian格式中,地址為A的字單元包括字節(jié)單元A,A+1,A+2,A+3,其中字節(jié)單元由高位到低位字節(jié)順序為A+3,A+2,A+1,A;地址為A的字單元包括半字單元A,A+2,其中半字單元高位到低位字節(jié)順序為A+2,A地址為A的半字單元包括字節(jié)單元A,A+1,其中字節(jié)單元由高位到低位字節(jié)順序為A+1,A。這種存儲格式如圖1.2所示。3124231615870字單元A半字單元A半字單元A+2字節(jié)單兀A字節(jié)單兀A+1
53、字節(jié)單兀A+2字節(jié)單兀A+3圖1.1big_endian格式的存儲器系統(tǒng)3124231615870字單元A半字單元A半字單元A+2字節(jié)單兀A字節(jié)單兀A+1字節(jié)單兀A+2字節(jié)單兀A+3圖1.2little_endian格式的存儲器系統(tǒng)1.7.3 非對齊的存儲訪問操作在ARM中,通常希望字單元的地址是字對齊的(地址的低兩位為0b00)。半字單元的地址是半字對齊的(地址的最低位為0b0)。在存儲訪問操作中,如果存儲單元的地址沒有遵守上述的對齊規(guī)則,則稱為非對齊的存儲訪問操作。1、非對齊的指令預(yù)取操作當(dāng)處理器處于ARM狀態(tài)期間,如果寫入到寄存器PC中的值是非字對齊的(低兩位不為0b00),要么指令執(zhí)行
54、的結(jié)果不可預(yù)知,要么地址值中最低兩位被忽略;當(dāng)處理器處于Thumb狀態(tài)期間,如果寫入到寄存器PC中的值是非半字對齊的(最低位不為0b0),要么指令執(zhí)行的結(jié)果不可預(yù)知,要么地址值中最低位被忽略。如果系統(tǒng)中指定,當(dāng)發(fā)生非對齊的指令預(yù)取操作時,忽略地址值中相應(yīng)的位,則由存儲系統(tǒng)實現(xiàn)這種“忽略”。也就是說,這時該地址值原封不動地送到存儲系統(tǒng)。2、非對齊的數(shù)據(jù)訪問操作對于Load/Store操作,如果數(shù)據(jù)非對齊的數(shù)據(jù)訪問操作,系統(tǒng)定義了下面3種可能的結(jié)果:執(zhí)行的結(jié)果不可預(yù)知忽略字單元地址的低兩位的值,即訪問地址(addressAND0xfffffffc)的字單元;忽略半字單元地址的最低位的值,即訪問(addressAND0xfffffffe)的半字單元。忽略字單元地址值中的低兩位的值;忽略半字單元地址的最低位的值。由存儲系統(tǒng)實現(xiàn)這種“忽略”。也就是說,這時該地址
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 冶金工程項目管理中的風(fēng)險與控制方法研究
- 基于EVA的財務(wù)績效評價研究
- 小數(shù)乘除法計算題及答案
- 電壓力鍋菜譜大全-20220703102217
- 深圳市中小幼教師公需科目課程-信息技術(shù)應(yīng)用能力課程教
- TOGAF認(rèn)證介紹講義
- 兔子舞,主持詞
- 05J909《工程做法》(標(biāo)準(zhǔn)圖集)
- 陽江2024年廣東陽江市消防救援支隊第十三批政府專職消防員(江城)招錄筆試歷年典型考點(頻考版試卷)附帶答案詳解版
- 民族醫(yī)學(xué)治靶一、胥體蓋、痼瘀、館瘀法、外甘法、行立法、行獨法、玉蓋法、洶熱法、神緒法、駐熊法、消毒法等獨特治療方法的應(yīng)用與效果評估
- 初三語文總復(fù)習(xí)全程計劃表
- 電子技術(shù)基礎(chǔ)與技能-機工教案第九章教案555集成定時器介紹
- 污水處理運行質(zhì)量保證措施
- 食材供貨及質(zhì)量保障措施方案
- 基于單片機的智能充電器設(shè)計
- 營養(yǎng)學(xué)概論演示
- 統(tǒng)編版語文四年級上冊期末總復(fù)習(xí)課件
- 2023年四川省鄉(xiāng)村醫(yī)生招聘筆試題庫及答案解析
- 彈力重力和摩擦力
- 配料罐(攪拌罐)說明書
- 【超星爾雅學(xué)習(xí)通】《中國近現(xiàn)代史綱要(首都師范大學(xué))》章節(jié)測試題及答案(一)
評論
0/150
提交評論