




版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、52 ARM體系結構概述 ARM編程模型 ARM基本尋址方式 ARM指令集 匯編語言程序設計53 ARM簡介 ARM體系結構的特點 ARM處理器結構 ARM體系的變種 ARM處理器內(nèi)核 ARM處理器核54Advances RISC Machines (稱為ARM) 由 Acorn、Apple和VLSI公司1990年11月聯(lián)合建立的一家設計公司。ARM是16/32位嵌入式RISC處理器知識產(chǎn)權供應商,該公司主要提供高性能, 低價位, 低功耗的RISC處理器、外圍設備, 和系統(tǒng)芯片設計給重要的國際電子企業(yè)。ARM處理器有3大特點耗電少、成本低、功能強。16/32位雙指令集全球眾多合作伙伴保證供應A
2、RM目前主要有6個系列的產(chǎn)品:ARM7、ARM9、ARM10E、ARM11、SecurCore、CORTEX。另外還有Inter公司的Xscale和StrongARM。第第3章章 1 2 3ARM體系結構概述ARM編程模型 ARM基本尋址方式 55 手機處理器90%的市場份額 上網(wǎng)本處理器30%的市場份額 平板電腦處理器70%的市場份額 2010年,ARM合作伙伴的出貨量達到了60億 2007年底,ARM的雇員總數(shù)為1728人,持有專利700項(另有900項正在申請批準中),全球分支機構31家,合作伙伴200家,年收入2.6億英鎊。 5657RISC型處理器結構:指令相對比較精簡,降低了處理器
3、的負載性,提高了處理器的速度。Thumb指令集:在新型的ARM體系結構中定義了16位的Thumb指令集,彌補了RISC型處理器占用指令存儲空間大的缺點。多處理器狀態(tài)模式:支持7種處理器模式,可以大大提高ARM處理器的效率。嵌入式在線仿真調(diào)試:內(nèi)嵌在線仿真ICE-RT邏輯,便于通過JTAG來仿真調(diào)試ARM體系結構芯片。靈活和方便的接口:有16的協(xié)處理器接口,方便擴充各種功能;具有片上總線AMBA,它定義了3組總線,可方便地擴充各種處理器及I/O,便于集成。低電壓低功耗的設計第第3章章 1 2 3ARM體系結構概述ARM編程模型 ARM基本尋址方式 58 由32位ALU、31個32位通用寄存器及6
4、個狀態(tài)寄存器、乘法器、3232位桶形移位寄存器、指令譯碼機控制邏輯、指令流水線和數(shù)據(jù)/地址寄存器組成。ARM的流水線結構:ARM7體系結構采用3級流水線ARM9體系結構采用5級流水線ARM10體系結構采用6級流水線ARM存儲器結構:ARM處理器不帶有片內(nèi)存儲器,系統(tǒng)所需的RAM和ROM通過總線外接,部分處理器片內(nèi)帶有存儲器管理單元MMU。ARM的I/O結構: ARM處理器不帶有I/O部件和模塊,需要通過總線來擴充。第第3章章 1 2 3ARM體系結構概述ARM編程模型 ARM基本尋址方式 596061存儲器映射I/O:ARM處理器對I/O端口地址采用統(tǒng)一編址方式,即把I/O端口地址作為特殊的存
5、儲器地址。直接存儲器存取DMA: ARM處理器一般沒有DMA部件,高檔ARM處理器有。中斷IRQ和快速中斷FIQ:ARM提供一般中斷和快速中斷,通常用快速中斷代替DMA的功能。主要通過采用大量后備寄存器保存現(xiàn)場、片內(nèi)RAM等加速中斷的進入時間。ARM協(xié)處理器接口:ARM通過增加協(xié)處理器來支持一個通用的指令集的擴充。可以擴展16個協(xié)處理器,每個協(xié)處理器可有16個寄存器。第第3章章 1 2 3ARM體系結構概述ARM編程模型 ARM基本尋址方式 62ARM AMBA接口:采用先進微控制器總線(AMBA)擴展不同體系架構的宏單元及I/O部件。AMBA總線包括三類:先進系統(tǒng)總線ASB:作為系統(tǒng)總線,用
6、來連接高性能系統(tǒng)模塊。先進高性能總線AHB:作為系統(tǒng)總線,用來連接高性能系統(tǒng)模塊。比ASB功能強。先進外圍總線APB:用于連接外圍宏單元。ARM JTAG調(diào)試接口:用于處理器狀態(tài)測試JTAG是英文“Joint Test Action Group(聯(lián)合測試行為組織)” 縮寫,主要用于芯片內(nèi)部測試。主要有4根線:TMS、TCK、TDI、TDO 第第3章章 1 2 3ARM體系結構概述ARM編程模型 ARM基本尋址方式 63Thumb指令集(T變種):Thumb指令集是將ARM指令集的一個子集重新編碼而形成的一個指令集。ARM指令長度為32位,Thumb指令長度為16位。這樣,使用Thumb指令可以
7、得到密度更高的代碼,這對于需要嚴格控制產(chǎn)品成本的設計是非常有意義的。長乘法指令(M變種):M變種增加了兩條用于進行長乘法的ARM指令。其中一條用于實現(xiàn)32位整數(shù)乘以32位整數(shù),生成64位整數(shù)的長乘法操作;另一條指令用于實現(xiàn)32位整數(shù)乘以32位位整數(shù),然后加上32位整數(shù),生成64位整數(shù)的長乘加操作。增強型DSP指令(E變種):E變種包含了一些附加的指令,這些指令用于增強處理器對一些典型的DSP算法的處理性能。主要包括: 1 2 3ARM體系結構概述ARM編程模型 ARM基本尋址方式 64幾條新的實現(xiàn)16位數(shù)據(jù)乘法和乘加操作的指令 實現(xiàn)飽和的帶符號數(shù)的加減法操作的指令。即在加減法操作溢出時,結果并
8、不進行卷繞,而是使用最大整數(shù)或最小負數(shù)來表示進行雙字數(shù)據(jù)操作的指令Cache預取指令PLDJava加速器Jazelle(J變種):ARM的Jazelle技術將Java的優(yōu)勢和先進的32位RISC芯片完美地結合在一起。Jazelle技術提供了Java加速功能,可以得到比普通Java虛擬機高得多的性能。ARM媒體功能擴展(SIMD變種):將音頻/視頻處理提高2-4倍,可以同時進行兩個16位操作數(shù)或者4個8位操作數(shù)的運算,并提供了小數(shù)算術運算 1 2 3ARM體系結構概述ARM編程模型 ARM基本尋址方式 6516 bit 16 bit 16 bit 16 bit 16 bit 16 bit 16
9、bit 16 bit16 bit源A源B結果同一個操作16 bit 16 bit 16 bit 16 bit 16 bit 16 bit 16 bit16 bit 16 bit 16 bit 16 bit 16 bit 16 bit 16 bit 16 bit66ARM微處理器目前包括下面幾個系列除了具有ARM體系結構的共同特點以外,每一個系列的ARM微處理器都有各自的特點和應用領域。ARM7、ARM9、ARM10E、ARM11、Cortex、Inter的Xscale和StrongARM。ARM內(nèi)核芯片具有RISC體系的一般特點:具有大量寄存器 。絕大多數(shù)操作都是在寄存器中進行,寄存器與內(nèi)存打
10、交道的唯一是通過Load/Store的體系結構在內(nèi)存和寄存器之間傳遞數(shù)據(jù)。 尋址方式簡單。采用固定長度的指令。 1 2 3ARM體系結構概述ARM編程模型 ARM基本尋址方式 67 ARM7系列微處理器:低功耗的32位RISC處理器,適合用于對價位和功耗要求較高的消費類應用。特點如下:具有嵌入式ICERT邏輯,調(diào)試開發(fā)方便。 極低的功耗,適合對功耗要求較高的應用,如便攜式產(chǎn)品。 能夠提供0.9MIPS/MHz的三級流水線結構。 代碼密度高并兼容16位的Thumb指令集。 對操作系統(tǒng)的支持廣泛,包括Windows CE、Linux、Palm OS等。 指令系統(tǒng)與ARM9系列、ARM9E系列和AR
11、M10E系列兼容,便于用戶的產(chǎn)品升級換代。 主頻最高可達130MIPS,高速的運算處理能力能勝任絕大多數(shù)的復雜應用。 1 2 3ARM體系結構概述ARM編程模型 ARM基本尋址方式 68 應用領域:工業(yè)控制、Internet設備、網(wǎng)絡和調(diào)制解調(diào)器設備、移動電話等多種多媒體和嵌入式應用。 ARM7系列微處理器包括如下幾種類型的核:ARM7TDMI、ARM7TDMI-S、ARM720T、ARM7EJ。 其中,ARM7TMDI是目前使用最廣泛的32位嵌入式RISC處理器,屬低端ARM處理器核。T代表支持Thumb指令集;M代表支持長乘法;D代表支持片上調(diào)試;I代表支持嵌入式跟蹤宏單元,便于實現(xiàn)調(diào)試中
12、的斷點和變量觀察;J代表支持Java加速;S代表可綜合。 1 2 3ARM體系結構概述ARM編程模型 ARM基本尋址方式 69 ARM9系列微處理器在高性能和低功耗特性方面提供最佳的性能。具有以下特點:5級整數(shù)流水線,指令執(zhí)行效率更高。提供1.1MIPS/MHz的哈佛結構。 支持32位ARM指令集和16位Thumb指令集。支持32位的高速AMBA總線接口。全性能的MMU,支持Windows CE、Linux、等多種主流嵌入式操作系統(tǒng)。MPU支持實時操作系統(tǒng)。 支持數(shù)據(jù)Cache和指令Cache。 應用領域:無線設備、儀器儀表、安全系統(tǒng)、機頂盒、高端打印機、數(shù)字照相機和數(shù)字攝像機等。 ARM9系
13、列微處理器包括如下幾種類型的核: ARM920T、ARM922T和ARM940T三種類型。 1 2 3ARM體系結構概述ARM編程模型 ARM基本尋址方式 70 ARM11系列微處理器是目前ARM家族中性能最好的一個系列,尤其是在多媒體處理能力方面,在先進的0.13 m工藝下,主頻可達750 MHz;ARM11核包含一個64位端口、4種狀態(tài)的跳轉目的地址緩存,支持SIMD指令,可使某些算法的運算速度提高23倍。(1) 多媒體處理擴展,使MPEG-4編碼/解碼速度加快一倍,音頻處理速度加快一倍;(2) 增強的Cache結構,實地址Cache,減少Cache的刷 新 和 重 載 , 減 少 上 下
14、 文 切 換 的 開 銷 ;(3) 增強的異常和中斷處理,使實時任務的處理更加迅速;(4) 支持Unaligned和Mixed-endian數(shù)據(jù)訪問,使數(shù)據(jù)共享、軟件移植更簡單,也有利于節(jié)省存儲器空間。71 ARM Cortex系列產(chǎn)品由三個系列所組成,全都采用V7/Thumb-2指令集設計,定位如下: ARM Cortex-A系列:復雜操作系統(tǒng)及客戶端裝置之應用處理器;A多媒體,開放式操作系統(tǒng),dsp加速。 高端 ARM Cortex-R系列:針對實時系統(tǒng)的嵌入式處理器;R實時,可預測性,超級穩(wěn)定性。中端 ARM Cortex-M系列:價格敏感型應用裝置之嵌入式處理器,包括微處理器應用;M為
15、工控設計,小巧快速。 低端72 處理器模式與狀態(tài) ARM寄存器組織 異常Exceptions 存儲器和存儲器映射I/O73ARM處理器支持7種不同的處理器模式,除用戶模式外的其它模式通稱為特權模式,主要是為了服務中斷或異常,或訪問保護的資源。除用戶和系統(tǒng)模式外的其它模式通稱為異常模式。處理器模式描述用戶usr正常程序執(zhí)行的模式快速中斷fiq用于高速數(shù)據(jù)傳輸和通道處理外部中斷irq用于通常的中斷處理 管理svc供操作系統(tǒng)使用的一種保護模式中止abt用于虛擬存儲及存儲保護 未定義und用于支持硬件協(xié)處理器的軟件仿真系統(tǒng)sys用于運行特權級的操作系統(tǒng)任務 ARM處理器的7種處理器模式異常模式特權模式
16、 1 2 3ARM體系結構概述ARM編程模型 ARM基本尋址方式 74ARM處理器有處理器有2種工作狀態(tài)種工作狀態(tài)Thumb指令集的功能是指令集的功能是32位位ARM指令集的指令集的功能子集。功能子集。Thumb在性能和代碼大小之間提供在性能和代碼大小之間提供了出色的折中。了出色的折中。正在執(zhí)行正在執(zhí)行Thumb指令集的處理器是工作在指令集的處理器是工作在Thumb狀態(tài)下。狀態(tài)下。正在執(zhí)行正在執(zhí)行ARM指令集的處理器是工作在指令集的處理器是工作在ARM狀態(tài)狀態(tài)下。下。 1 2 3ARM體系結構概述ARM編程模型 ARM基本尋址方式 75 ARM處理器共有37個寄存器。其中包括:31個通用寄存器
17、,包括R0R15,其中R15為程序計數(shù)器(PC)。這些寄存器都是32位寄存器。在每種處理器模式中都有一組這樣的寄存器。任意模式下,可見的寄存器包括16個通用寄存器(R0R15)、一個或兩個狀態(tài)寄存器。在所有的寄存器中,有些是各模式共用的一個物理寄存器;有一些寄存器是各模式自己擁有的獨立的物理寄存器。6個狀態(tài)寄存器,這些寄存器也是32位寄存器,但只使用了其中的12位。 1 2 3ARM體系結構概述ARM編程模型 ARM基本尋址方式 76不分組寄存器R0R7:任何模式下所訪問的都是同樣的物理寄存器。分組寄存器R8R14:每一個訪問的物理寄存器取決于當前的處理器模式,若要訪問特定的物理寄存器而不依賴
18、于當前的處理器模式,則要使用規(guī)定的名字。其中:R13通常用作堆棧指針,稱為SPR14用于子程序連接寄存器,稱為LR程序計數(shù)器R15:由于ARM體系結構采用了多級流水線技術,PC總是指向當前指令的下兩條指令的地址,即PC的值=當前指令的地址+8。并且在ARM狀態(tài),位1:0為0(字對齊)在Thumb狀態(tài)位0為0,(半字對齊) 1 2 3ARM體系結構概述ARM編程模型 ARM基本尋址方式 77 1 2 3ARM體系結構概述ARM編程模型 ARM基本尋址方式 78Lable程序A程序BR14BL Lable地址A?MOV PC,LRR14(地址A)Lable?1.程序A執(zhí)行過程中調(diào)用程序B;操作流程
19、2.程序跳轉至標號Lable,執(zhí)行程序B。同時硬件將“BL Lable”指令的下一條指令所在地址存入R14;3.程序B執(zhí)行最后,將R14寄存器的內(nèi)容放入PC,返回程序A;79寄存器類別寄存器在匯編中的名稱各模式下實際訪問的寄存器用戶系統(tǒng)管理中止未定義中斷快中斷通用寄存器和程序計數(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)
20、R13R13_svcR13_abtR13_undR13_irqR13_fiqR14(LR)R14R14_svcR14_abtR14_undR14_irqR14_fiqR15(PC)R15狀態(tài)寄存器CPSRCPSRSPSR無SPSR_abtSPSR_abtSPSR_undSPSR_irqSPSR_fiq程序計數(shù)器R15(PC) 寄存器R15為程序計數(shù)器(PC),它指向正在取指的地址。可以認為它是一個通用寄存器,但是對于它的使用有許多與指令相關的限制或特殊情況。如果R15使用的方式超出了這些限制,那么結果將是不可預測的。80 讀R15的限制 正常操作時,從R15讀取的值是處理器正在取指的地址,即當
21、前正在執(zhí)行指令的地址加上8個字節(jié)(兩條ARM指令的長度)。由于ARM指令總是以字為單位,所以R15寄存器的最低兩位總是為0。LDR R0,PC?PCPC-4PC-8正在執(zhí)行正在譯碼正在取指流水線狀態(tài)地址程序代碼81 讀R15的限制 當使用STR或STM指令保存R15時,會有一個例外。這些指令可能將當前指令地址加8字節(jié)或加12字節(jié)保存(將來可能還有其它數(shù)字)。偏移量是8還是12取決于具體的ARM芯片,但是對于一個確定的芯片,這個值是一個常量。 所以最好避免使用STR和STM指令來保存R15,如果很難做到,那么應當在程序中計算出該芯片的偏移量。82 寫R15的限制 正常操作時,寫入正常操作時,寫入
22、R15 R15 的值被當作一個的值被當作一個指令地址,程序從這個地址處繼續(xù)執(zhí)行(相指令地址,程序從這個地址處繼續(xù)執(zhí)行(相當于執(zhí)行一次無條件跳轉)。當于執(zhí)行一次無條件跳轉)。 83 寫R15的限制 由于ARM指令以字節(jié)為邊界,因此寫入R15的值最低兩位通常為0b00。具體的規(guī)則取決于內(nèi)核結構的版本:在ARM結構V3版及以下版本中,寫入R15的值的最低兩位被忽略,因此跳轉地址由指令的實際目標地址(寫入R15的值)和0 xFFFFFFFC相與得到;在ARM結構V4版及以上版本中,寫入R15的值的最低兩位為0,如果不是,結果將不可預測。84寄 存 器 R 1 6 用 作 當 前 程 序 狀 態(tài) 寄 存
23、 器CPSR,可在任何運行模式下被訪問,它包括:每一種異常模式下有一個專用的物理狀態(tài)寄存器,稱為備份程序狀態(tài)寄存器SPSR,當異常發(fā)生時,SPSR用于保存CPSR的當前值,從異常退出時則可由SPSR來恢復CPSR。用戶模式和系統(tǒng)模式下不應該訪問SPSR。 1 2 3ARM體系結構概述ARM編程模型 ARM基本尋址方式 85Thumb狀態(tài)下的寄存器集是ARM狀態(tài)下寄存器集的一個子集,程序員可以直接訪問8個通用寄存器R07、PC、SP、LR、和CPSR。在每一種特權模式下都有一組SP、LR和SPSR。 1 2 3ARM體系結構概述ARM編程模型 ARM基本尋址方式 868788當正常的程序執(zhí)行流程
24、發(fā)生暫時的停止時,稱之為異常,例如處理一個外部的中斷請求。在處理異常之前,當前處理器的狀態(tài)必須保留,這樣當異常處理完成之后,當前程序可以繼續(xù)執(zhí)行。處理器允許多個異常同時發(fā)生,它們將會按固定的優(yōu)先級進行處理。ARM體系結構中的異常,與8位/16位體系結構的中斷有很大的相似之處,但異常與中斷的概念并不完全等同。 當異常出現(xiàn)后,ARM強制從異常類型對應的固定存儲器地址開始執(zhí)行程序。這些固定的地址稱為異常向量Exception Vectors(P40表3-6) 1 2 3ARM體系結構概述ARM編程模型 ARM基本尋址方式 89復位:當處理器復位電平有效時,產(chǎn)生復位異常。未定義指令:當ARM處理器或協(xié)
25、處理器遇到不能處理的指令時,產(chǎn)生未定義指令異常。軟件中斷:由執(zhí)行SWI指令產(chǎn)生,可使用該異常機制實現(xiàn)用戶模式下的系統(tǒng)功能調(diào)用。指令預取中止:當指令預取訪問存儲器失敗并且無效的預取指令被執(zhí)行時,產(chǎn)生指令預取中止異常。 數(shù)據(jù)中止:若處理器數(shù)據(jù)訪問的地址不存在,或該地址不允許當前指令訪問時,產(chǎn)生數(shù)據(jù)中止異常。 外部中斷請求IRQ:當處理器的外部中斷請求引腳有效,且CPSR中的I位為0時,產(chǎn)生IRQ異常。快速中斷請求FIQ:當處理器的快速中斷請求引腳有效,且CPSR中的F位為0時,產(chǎn)生FIQ異常。 1 2 3ARM體系結構概述ARM編程模型 ARM基本尋址方式 90異常向量表 1 2 3ARM體系結構
26、概述ARM編程模型 ARM基本尋址方式 91優(yōu)先級優(yōu)先級異常異常優(yōu)先級優(yōu)先級異常異常1(最高)(最高)復位復位4IRQ2數(shù)據(jù)中止數(shù)據(jù)中止5預取中止預取中止3FIQ6(最低)(最低)未定義指令、未定義指令、SWI92 響應將下一條指令的地址存入相應LR,以便程序在處理異常返回時能從正確的位置重新開始執(zhí)行。將CPSR復制到相應的SPSR中。根據(jù)異常類型,強制設置CPSR的運行模式位。強制PC從相關的異常向量地址取下一條指令執(zhí)行,從而跳轉到相應的異常處理程序處。 返回: 將LR的值回送到PC中。 將SPSR復制回CPSR中。 若進入異常處理時設置了中斷禁止位,則清除。 1 2 3ARM體系結構概述A
27、RM編程模型 ARM基本尋址方式 93 異常發(fā)生時,程序要跳轉至異常服務程序,對返回地址的處理與子程序調(diào)用類似,都是由硬件完成的。區(qū)別在于有些異常有一個小常量的偏移。R14R14_irq用戶模式下的程序IRQ模式下的程序AareturnB.XA地址A地址A1.執(zhí)行用戶模式下的程序;2.發(fā)生IRQ中斷,硬件將某個地址存入IRQ模式下的R14_irq寄存器,用戶模式下的R14沒有被破壞;3. IRQ服務程序A執(zhí)行完畢,將R14_irq寄存器的內(nèi)容減去某個常量后存入PC,返回之前被中斷的程序;未被破壞94R14R14_irq用戶模式下的程序IRQ模式下的程序AaB.XA地址A地址A1.執(zhí)行用戶模式下
28、的程序;2.發(fā)生IRQ中斷,硬件將某個地址存入IRQ模式下的R14_irq寄存器,用戶模式下的R14沒有被破壞;3. IRQ服務程序A執(zhí)行完畢,將R14_irq寄存器的內(nèi)容減去某個常量后存入PC,返回之前被中斷的程序;未被破壞IRQ模式下的程序BareturnB.XA地址B地址B4. 如果在IRQ處理程序中打開IRQ中斷,并且再次發(fā)生IRQ中斷,或者調(diào)用子程序;5. 硬件將返回地址保存在R14_irq寄存器中,原來保存的返回地址將被覆蓋,造成錯誤;被破壞6. 在程序B返回到程序A,然后在返回到用戶模式下被中斷的程序時,發(fā)生錯誤,將不能正確返回;returnreturn 解決辦法是確保R14的對
29、應版本在發(fā)生中斷嵌套時不再保存任何有意義的值(將R14入棧),或者切換到其它處理器模式下。 當發(fā)生異常嵌套時,這些異常之間可能會發(fā)生沖突。例如:如果用戶在用戶模式下執(zhí)行程序時發(fā)生了IRQ中斷,用戶模式寄存器不會被破壞。但是如果允許在IRQ模式下的中斷處理程序重新使能IRQ中斷,并且發(fā)生了嵌套的IRQ中斷時,外部中斷處理程序保存在R14_irq中的任何值都將被嵌套中斷的返回地址所覆蓋。95存儲器:ARM體系使用單一的平板地址空間。該地址空間的大小為232個8位字節(jié),即4G。存儲器訪問的地址要求對準,ARM存儲器的空間可以是:字節(jié)對齊,范圍為0232-1半字對齊(A、A+1),范圍為0231-1字
30、對齊的(A、A+1、A+2、A+3),范圍為0230-1存儲器映射I/O:I/O設別地址和存儲器統(tǒng)一編址,當使用這些特定的存儲器地址讀寫時,提供的是I/O功能。小端和大端:地址單元其所對應的數(shù)據(jù)高低位順序與存儲系統(tǒng)是小端還是大端有關。小端低位在低地址,大端低位在高地址。 1 2 3ARM體系結構概述ARM編程模型 ARM基本尋址方式 96ARM處理器支持下列數(shù)據(jù)類型: 字節(jié) 8位 半字 16位(必須分配為占用2個字節(jié)) 字 32為(必須分配為占用4個字節(jié))ARM體系結構可以用兩種方法存儲字數(shù)據(jù),體系結構可以用兩種方法存儲字數(shù)據(jù),稱為稱為大端格式大端格式和和小端格式小端格式。1112342字單元
31、半字0半字1字單元半字1半字097 ARM指令編碼的一般方式 ARM指令的尋址方式 ARM匯編程序?qū)嵗?899 ARM指令匯編格式S,使用條件碼“cond”可以實現(xiàn)高效的邏輯操作(節(jié)省跳轉和條件語句),提高代碼效率。所有的ARM指令都可以條件執(zhí)行,而Thumb指令只有B(跳轉)指令具有條件執(zhí)行功能。如果指令不標明條件代碼,將默認為無條件(AL)執(zhí)行。 Operand2形式#immed_8r、 Rm、 Rm,shift(寄存器(寄存器+移位)移位) 尋址方式所謂尋址方式就是處理器根據(jù)指令中給出的地址信息來尋址物理地址的方式。對于ARM指令來說,就是如何找到operand2具體來說,有以下9種寄存
32、器尋址;立即尋址;寄存器移位尋址;寄存器間寄存器尋址;立即尋址;寄存器移位尋址;寄存器間接尋址;基址尋址;多寄存器尋址;堆棧尋址;塊拷接尋址;基址尋址;多寄存器尋址;堆棧尋址;塊拷貝尋址;相對尋址。貝尋址;相對尋址。100 操作數(shù)的值在寄存器中,指令中的地址操作數(shù)的值在寄存器中,指令中的地址碼字段指出的是寄存器編號,指令執(zhí)行時直碼字段指出的是寄存器編號,指令執(zhí)行時直接取出寄存器值來操作。寄存器尋址指令舉接取出寄存器值來操作。寄存器尋址指令舉例如下:例如下: MOV R1,R2 ;將將R2的值存入的值存入R1 SUB R0,R1,R2 ;將將R1的值減去的值減去R2的值,結果保存到的值,結果保存
33、到R0 0 xAA0 x55R2R1尋址方式分類尋址方式分類寄存器尋址寄存器尋址MOV R1,R20 xAA101 立即尋址指令中的操作碼字段后面的立即尋址指令中的操作碼字段后面的地址碼部分即是操作數(shù)本身,也就是說,地址碼部分即是操作數(shù)本身,也就是說,數(shù)據(jù)就包含在指令當中,取出指令也就取數(shù)據(jù)就包含在指令當中,取出指令也就取出了可以立即使用的操作數(shù)出了可以立即使用的操作數(shù)( (這樣的數(shù)稱為這樣的數(shù)稱為立即數(shù)立即數(shù)) )。立即尋址指令舉例如下:。立即尋址指令舉例如下: SUBSR0,R0,#1 ;R0減減1,結果,結果放入放入R0,并且影響標志位,并且影響標志位MOV R0,#0 xFF000 ;
34、將立即數(shù)將立即數(shù)0 xFF000裝入裝入R0寄存器寄存器 0 x55R0MOV R0,#0 xFF00程序存儲尋址方式分類立即尋址MOV R0,#0 xFF000 xFF00從代碼中獲得數(shù)據(jù)102 寄存器移位尋址是寄存器移位尋址是ARMARM指令集特有的尋址方式。當指令集特有的尋址方式。當?shù)诘? 2個操作數(shù)是寄存器移位方式時,第個操作數(shù)是寄存器移位方式時,第2 2個寄存器操作數(shù)個寄存器操作數(shù)在與第在與第1 1個操作數(shù)結合之前,選擇進行移位操作。寄存器個操作數(shù)結合之前,選擇進行移位操作。寄存器移位尋址指令舉例如下:移位尋址指令舉例如下:MOV R0,R2,LSL #3;R2的值左移的值左移3位,
35、結果放入位,結果放入R0, ;即是即是R0=R28 ANDS R1,R1,R2,LSL R3;R2的值左移的值左移R3位,然后位,然后 ;和和R1相相“與與”操作,結果放入操作,結果放入R10 x55R0R20 x01尋址方式分類寄存器移位尋址MOV R0,R2,LSL #30 x080 x08邏輯左移3位103 寄存器間接尋址指令中的地址碼給出的是一寄存器間接尋址指令中的地址碼給出的是一個通用寄存器的編號,所需的操作數(shù)保存在寄個通用寄存器的編號,所需的操作數(shù)保存在寄存器指定地址的存儲單元中,即寄存器為操作存器指定地址的存儲單元中,即寄存器為操作數(shù)的地址指針。例如:數(shù)的地址指針。例如: LDR
36、 R1,R2 ;將將R2指向的存儲單元的數(shù)據(jù)指向的存儲單元的數(shù)據(jù);讀出保存在讀出保存在R1中中 SWP R1,R1,R2 ;將寄存器將寄存器R1的值和的值和R2;指定的存儲單元的內(nèi)容交換指定的存儲單元的內(nèi)容交換 0 x55R0R2 0 x400000000 xAA0 x40000000 尋址方式分類尋址方式分類寄存器間接尋址寄存器間接尋址LDR R0,R20 xAA104LSL移位操作:移位操作:0LSR移位操作:移位操作:0ASR移位操作:移位操作:ROR移位操作:移位操作:RRX移位操作:移位操作:C105 基址尋址就是將基址寄存器的內(nèi)容與指令中給出基址尋址就是將基址寄存器的內(nèi)容與指令中給
37、出的偏移量(的偏移量(4K b)a+;Elseb+;對應的匯編代碼:對應的匯編代碼:CMPR0,R1 ;R0(a)與)與R1(b)比較比較ADDHI R0,R0,#1 ;若若R0R1,則,則R0=R0+1ADDLS R1,R1,#1 ;若若R011,則,則R1=R1+1R1=R1+1示例:示例:119 32位ARM指令集有14種基本指令類型組成,可分為5大類:3種類型的存儲器訪問指令:控制存儲器和寄存器之間的數(shù)據(jù)傳送。3種類型的數(shù)據(jù)處理指令:使用片內(nèi)ALU、桶形移位器和乘法器針對31個寄存器完成高速數(shù)據(jù)處理操作。4種類型的轉移指令:控制程序執(zhí)行流程、指令優(yōu)先級以及ARM代碼和Thumb代碼的切
38、換。3種類型的協(xié)處理器指令:專用于控制外部協(xié)處理器。這些指令以開放和統(tǒng)一的方式擴展了指令集的片外功能。雜類指令:包括中斷調(diào)用、標志傳入傳出等。34 5ARM基本尋址方式 ARM指令集 匯編語言程序設計 120 在存儲器和寄存器之間傳送單一數(shù)據(jù)指令LDR和STR指令格式: opcond type Rd , 地址。type表示傳送數(shù)據(jù)的類型,必須是下列值之一:D:表示雙字、空:表示字SH:帶符號半字、H:無符號半字B:無符號字節(jié)、SB:帶符號字節(jié)使用舉例:LDRB R0, R1LDRNEB R0, R1, #1!STR Rd, placeSTR Rd, Rbase, Rindex34 5ARM基本
39、尋址方式 ARM指令集 匯編語言程序設計 121LDRLDR和和STRSTR字和無符號字節(jié)加載字和無符號字節(jié)加載/ /存儲指令編碼存儲指令編碼指令執(zhí)行的條件碼指令執(zhí)行的條件碼I I為為0 0時,偏移量為時,偏移量為1212位立即數(shù),為位立即數(shù),為1 1時,時,偏移量為寄存器移偏移量為寄存器移位位P P表示前表示前/ /后變址后變址U表示加/減B B為為1 1表示字節(jié)訪問,表示字節(jié)訪問,為為0 0表示字訪問表示字訪問WW表示回寫表示回寫為指令的尋址方式為指令的尋址方式RdRd為源為源/ /目標寄存器目標寄存器RnRn為基址寄存器為基址寄存器L L用于區(qū)別加載(用于區(qū)別加載(L L為為1 1)或存
40、儲(或存儲(L L為為0 0)122LDRLDR和和STRSTR字和無符號字節(jié)加載字和無符號字節(jié)加載/ /存儲指令存儲指令 LDR/STRLDR/STR指令尋址非常靈活,它由兩部分組成,其中一部分為一個基指令尋址非常靈活,它由兩部分組成,其中一部分為一個基址寄存器,可以為任一個通用寄存器;另一部分為一個地址偏移量。地址寄存器,可以為任一個通用寄存器;另一部分為一個地址偏移量。地址偏移量有以下址偏移量有以下3 3種格式:種格式: 立即數(shù)立即數(shù)。立即數(shù)可以是一個無符號的數(shù)值。這個數(shù)據(jù)可以加到基址寄存。立即數(shù)可以是一個無符號的數(shù)值。這個數(shù)據(jù)可以加到基址寄存器,也可以從基址寄存器中減去這個數(shù)值。器,也
41、可以從基址寄存器中減去這個數(shù)值。 如:如:LDR R1,R0,#0 x12 ;R1-R0+0 x12寄存器寄存器。寄存器中的數(shù)值可以加到基址寄存器,也可以從基址寄存器中。寄存器中的數(shù)值可以加到基址寄存器,也可以從基址寄存器中減去這個數(shù)值。減去這個數(shù)值。 如:如:LDR R1,R0,R2 ; R1-R0+R2 LDR R1,R0,-R2 ; R1-R0-R2寄存器及移位常數(shù)寄存器及移位常數(shù)。寄存器移位后的值可以加到基址寄存器,也可以從。寄存器移位后的值可以加到基址寄存器,也可以從基址寄存器中減去這個數(shù)值。基址寄存器中減去這個數(shù)值。 如:如:LDR R1,R0,R2,LSL #2 ;R1-R0+R
42、2*4 123 從尋址方式的地址計算方法分,加載從尋址方式的地址計算方法分,加載/ /存儲指令有存儲指令有以下以下4 4種格式:種格式: 零偏移零偏移。如:如:LDR Rd,Rn 前索引偏移前索引偏移。如:如:LDR Rd,Rn,#0 x04!程序相對偏移程序相對偏移。 如:如:LDR Rd,labe1 后索引偏移。后索引偏移。如:如:LDR Rd,Rn,#-0 x04注意注意:必須保證字數(shù)據(jù)操作的地址是:必須保證字數(shù)據(jù)操作的地址是3232位對齊的。位對齊的。LDRLDR和和STRSTR字和無符號字節(jié)加載字和無符號字節(jié)加載/ /存儲指令存儲指令124LDRLDR和和STRSTR半字和有符號字節(jié)
43、加載半字和有符號字節(jié)加載/ /存儲指令存儲指令 這類這類LDR/STRLDR/STR指令可加載有符號半字或字節(jié),指令可加載有符號半字或字節(jié),可加載可加載/ /存儲無符號半字。偏移量格式、尋址方式與存儲無符號半字。偏移量格式、尋址方式與加載加載/ /存儲字和無符號字節(jié)指令相同。存儲字和無符號字節(jié)指令相同。 LDRcondSB Rd,;將指定地址上的有符號字節(jié)讀入將指定地址上的有符號字節(jié)讀入Rd LDRcondSH Rd,;將指定地址上的有符號半字讀入將指定地址上的有符號半字讀入Rd LDRcondH Rd,;將指定地址上的半字數(shù)據(jù)讀入將指定地址上的半字數(shù)據(jù)讀入Rd STRcondH Rd,;將將
44、Rd中的半字數(shù)據(jù)存入指定地址中的半字數(shù)據(jù)存入指定地址注意注意:1. 1.有符號位半字有符號位半字/ /字節(jié)加載是指用符號位加載擴展到字節(jié)加載是指用符號位加載擴展到3232位,無符號半字加載是位,無符號半字加載是指用零擴展到指用零擴展到3232位;位;2.2.半字讀寫的指定地址必須為半字讀寫的指定地址必須為偶數(shù)偶數(shù),否則將產(chǎn)生不可靠的結果;,否則將產(chǎn)生不可靠的結果;125ARM存儲器訪問指令存儲器訪問指令單寄存器存儲單寄存器存儲LDRLDR和和STRSTR半字和有符號字節(jié)加載半字和有符號字節(jié)加載/ /存儲指令編碼存儲指令編碼指令執(zhí)行的條件碼指令執(zhí)行的條件碼I I為為0 0時,偏移量為時,偏移量為
45、1212位立即數(shù),為位立即數(shù),為1 1時,時,偏移量為寄存器移偏移量為寄存器移位位P P表示前表示前/ /后變址后變址U U表示加表示加/ /減減WW表示回寫表示回寫為指令的尋址方式為指令的尋址方式RdRd為源為源/ /目標寄存器目標寄存器RnRn為基址寄存器為基址寄存器L L用于區(qū)別加載(用于區(qū)別加載(L L為為1 1)或存儲(或存儲(L L為為0 0)S S為為1 1表示有符號訪問,表示有符號訪問,為為0 0表示無符號訪問表示無符號訪問H H為為1 1表示半字訪問,為表示半字訪問,為0 0表示字節(jié)訪問表示字節(jié)訪問126LDRLDR和和STRSTR指令應用示例:指令應用示例:1. 1.加載加
46、載/ /存儲字和無符號字節(jié)指令存儲字和無符號字節(jié)指令LDRR2,R5;將將R5指向地址的字數(shù)據(jù)存入指向地址的字數(shù)據(jù)存入R2STRR1,R0,#0 x04;將將R1的數(shù)據(jù)存儲到的數(shù)據(jù)存儲到R0+0 x04地址地址LDRBR3,R2,#-1 ;將將R2指向地址的字節(jié)數(shù)據(jù)存入指向地址的字節(jié)數(shù)據(jù)存入R3,R2R21STRBR0,R3,-R8 ASR 2 ;R0-R3-R8/4,存儲存儲R0的最低有效字節(jié)的最低有效字節(jié)2.2.加載加載/ /存儲半字和有符號字節(jié)指令存儲半字和有符號字節(jié)指令LDRSB R1,R0,R3;將將R0+R3地址上的字節(jié)數(shù)據(jù)存入地址上的字節(jié)數(shù)據(jù)存入R1,;高高24位用符號擴展位用符
47、號擴展LDRH R6,R2,#2;將將R2指向地址的半字數(shù)據(jù)存入指向地址的半字數(shù)據(jù)存入R6,高,高16位用位用0擴展擴展;讀出后,讀出后,R2=R2+2STRH R1,R0,#2!;將將R1的半字數(shù)據(jù)保存到的半字數(shù)據(jù)保存到R0+2地址,地址,;只修改低只修改低2字節(jié)數(shù)據(jù),然后字節(jié)數(shù)據(jù),然后R0=R0+2ARM存儲器訪問指令存儲器訪問指令單寄存器存儲單寄存器存儲127 在存儲器和寄存器之間傳送多個數(shù)據(jù)指令LDM和STM,可以傳送R015的任何組合。指令格式: opcond mode Rn! , 。mode必須是下列值之一:IA或IB:每次傳送后或前地址加4DA或DB:每次傳送后或前地址減4FD或
48、ED:滿或空遞減堆棧FA或EA:滿或空遞增堆棧使用舉例:STMIA R8, R0, R1,R9LDMFD R13!, R1, R0LDMFD R13!, R0,R4-R7,PC34 5ARM基本尋址方式 ARM指令集 匯編語言程序設計 128ARM存儲器訪問指令存儲器訪問指令多寄存器存取多寄存器存取 多寄存器加載多寄存器加載/ /存儲指令的存儲指令的8 8種模式如下表所示,右邊四種為堆棧操種模式如下表所示,右邊四種為堆棧操作、左邊四種為數(shù)據(jù)傳送操作。作、左邊四種為數(shù)據(jù)傳送操作。模式模式說明說明模式模式說明說明IA每次傳送后地址加每次傳送后地址加4FD滿遞減堆棧滿遞減堆棧IB每次傳送前地址加每次
49、傳送前地址加4ED空遞減堆棧空遞減堆棧DA每次傳送后地址減每次傳送后地址減4FA滿遞增堆棧滿遞增堆棧DB每次傳送前地址減每次傳送前地址減4EA空遞增堆棧空遞增堆棧數(shù)據(jù)塊傳送操作數(shù)據(jù)塊傳送操作堆棧操作堆棧操作 進行數(shù)據(jù)復制時,先設置好源數(shù)據(jù)指針和目標指針,然后使用塊拷進行數(shù)據(jù)復制時,先設置好源數(shù)據(jù)指針和目標指針,然后使用塊拷貝尋址指令貝尋址指令LDMIA/STMIALDMIA/STMIA、LDMIB/STMIBLDMIB/STMIB、LDMDA/STMDALDMDA/STMDA、LDMDB/STMDBLDMDB/STMDB進行讀取和存儲進行讀取和存儲 。 進行堆棧操作操作時,要先設置堆棧指針(進
50、行堆棧操作操作時,要先設置堆棧指針(SPSP),然后使用堆棧尋),然后使用堆棧尋址指令址指令STMFD/LDMFD STMFD/LDMFD 、STMED/LDMEDSTMED/LDMED、STMFA/LDMFASTMFA/LDMFA和和STMEA/LDMEASTMEA/LDMEA實現(xiàn)堆棧操作。實現(xiàn)堆棧操作。129ARM存儲器訪問指令存儲器訪問指令多寄存器存取多寄存器存取數(shù)據(jù)塊傳送指數(shù)據(jù)塊傳送指令令操作過程如操作過程如右圖所示,其右圖所示,其中中R1R1為指令執(zhí)為指令執(zhí)行前的基址寄行前的基址寄存器,存器,R1R1則則為指令執(zhí)行后為指令執(zhí)行后的基址寄存器。的基址寄存器。R5R6R7R1 R1 指令
51、STMIA R1!,R5-R7空遞增4008H4004H4000H4014H4010H400CHR5R6R7R1 R1 指令STMDA R1!,R5-R7空遞減4008H4004H4000H4014H4010H400CHR5R6R7R1 R1 指令STMIB R1!,R5-R7滿遞增4008H4004H4000H4014H4010H400CHR5R6R7R1 R1 指令STMDB R1!,R5-R7滿遞減4008H4004H4000H4014H4010H400CH130ARM存儲器訪問指令存儲器訪問指令多寄存器存取多寄存器存取數(shù)據(jù)塊傳送數(shù)據(jù)塊傳送存儲存儲堆棧操作堆棧操作壓棧壓棧說明說明數(shù)據(jù)塊傳
52、送數(shù)據(jù)塊傳送加載加載堆棧操作堆棧操作出棧出棧說明說明STMDASTMED空遞減空遞減LDMDALDMFA滿遞減滿遞減STMIASTMEA空遞增空遞增LDMIALDMFD滿遞增滿遞增STMDBSTMFD滿遞減滿遞減LDMDBLDMEA空遞減空遞減STMIBSTMFA滿遞增滿遞增LDMIBLDMED空遞增空遞增;使用數(shù)據(jù)塊傳送指令進行堆棧操作使用數(shù)據(jù)塊傳送指令進行堆棧操作STMDAR0!,R5-R6. . .LDMIBR0!,R5-R6;使用堆棧指令進行堆棧操作使用堆棧指令進行堆棧操作STMEDR13!,R5-R6. . .LDMEDR13!,R5-R6 兩段代碼的執(zhí)行結果是一樣的,但是使用堆棧指
53、令的壓棧和出棧操兩段代碼的執(zhí)行結果是一樣的,但是使用堆棧指令的壓棧和出棧操作編程很簡單(只要前后一致即可),而使用數(shù)據(jù)塊指令進行壓棧和作編程很簡單(只要前后一致即可),而使用數(shù)據(jù)塊指令進行壓棧和出棧操作則需要考慮空滿一致、加與減對應的問題。出棧操作則需要考慮空滿一致、加與減對應的問題。堆棧操作和數(shù)據(jù)塊傳送指令類似,也有堆棧操作和數(shù)據(jù)塊傳送指令類似,也有4 4種模式,差別在于基地址寄種模式,差別在于基地址寄存器不一樣。這兩類指令之間的關系如下表所示:存器不一樣。這兩類指令之間的關系如下表所示:131 預加載指令PLD:用于提示存儲系統(tǒng)將要加載的存儲器地址,提高存儲器的訪問速度。格式:PLD Rn
54、 , Flexoffset舉例:PLD R2、PLDR0,R2PLD R15,#280、PLD R5,R8,LSL #2 單一數(shù)據(jù)交換指令SWP:在寄存器和存儲器之間進行數(shù)據(jù)交換。格式:SWP cond B Rd, Rm, Rn舉例:SWP R1,R2,R5SWPB R1,R2,R534 5ARM基本尋址方式 ARM指令集 匯編語言程序設計 132 ADD、ADC 、SUB 、SBC、RSB、RSC格式:op cond S Rd, Rn, Operand2說明:ADD(ADC):Rn+Operand2Rd (帶進位加)SUB(SBC): Rn-Operand2Rd (帶進位減)RSB(RSC)
55、 :Operand2-RnRd (帶進位減) 與AND、或ORR、異或EOR和位清零BIC格式:op cond S Rd, Rn, Operand2說明:BIC:將Rn中的位與 Operand2之中相應位的反碼進行與操作,結果送Rd 。其它命令實現(xiàn)Rn OP Operand2 Rd34 5ARM基本尋址方式 ARM指令集 匯編語言程序設計 133助記符助記符說明說明操作操作條件碼位置條件碼位置ADD Rd, Rn, operand2ADD Rd, Rn, operand2加法運算指令加法運算指令RdRdRn+operand2Rn+operand2ADDcondSADDcondSSUB Rd,
56、Rn, operand2SUB Rd, Rn, operand2減法運算指令減法運算指令RdRdRn-operand2Rn-operand2SUBcondSSUBcondSRSB Rd, Rn, operand2RSB Rd, Rn, operand2逆向減法指令逆向減法指令RdRdoperand2-Rnoperand2-RnRSBcondSRSBcondSADC Rd, Rn, operand2ADC Rd, Rn, operand2帶進位加法帶進位加法RdRdRn+operand2+CarryRn+operand2+CarryADCcondSADCcondSSBC Rd, Rn, oper
57、and2SBC Rd, Rn, operand2帶進位減法指令帶進位減法指令R dR d R n - o p e r a n d 2 -R n - o p e r a n d 2 -(NOT)Carry(NOT)CarrySBCcondSSBCcondSRSC Rd, Rn, operand2RSC Rd, Rn, operand2帶進位逆向減法指帶進位逆向減法指令令R dR d o p e r a n d 2 - R n -o p e r a n d 2 - R n -(NOT)Carry(NOT)CarryRSCcondSRSCcondS134助記符助記符說明說明操作操作條件碼位置條件碼位
58、置AND Rd, Rn, operand2AND Rd, Rn, operand2邏輯與操作邏輯與操作指令指令RdRdRn & operand2Rn & operand2ANDcondSANDcondSORR Rd, Rn, operand2ORR Rd, Rn, operand2邏輯或操作邏輯或操作指令指令RdRdRn | operand2Rn | operand2ORRcondSORRcondSEOR Rd, Rn, operand2EOR Rd, Rn, operand2邏輯異或操邏輯異或操作指令作指令RdRdRn operand2Rn operand2EORcondSE
59、ORcondSBIC Rd, Rn, operand2BIC Rd, Rn, operand2位清除指令位清除指令RdRdRn & (operand2)Rn & (operand2)BICcondSBICcondSARMARM數(shù)據(jù)處理指令數(shù)據(jù)處理指令邏輯運算指令邏輯運算指令注:當后綴注:當后綴S時,這些指令根據(jù)結果更新標志時,這些指令根據(jù)結果更新標志N和和Z,在計算,在計算Operand2時更新標志時更新標志C,不影,不影響標志響標志V。135 傳送MOV和傳送取反值MVN 指令格式:OP cond S Rd, Operand2說明:MVN將Operand2按位取反送RdOpe
60、rand2只能是寄存器或立即數(shù)舉例:MOV R0, R0 ; R0 = R0 相當于 NOP 指令MVN R0, #0 xff ; R0 = 0 xffffff00 比較CMP和比較反值CMN格式: OP cond S Rd, Operand2說明:結果不保存但影響條件碼標志, CMN做加法。34 5ARM基本尋址方式 ARM指令集 匯編語言程序設計 136 測試位TST和測試等價TEQ指令格式:OP cond Rn, Operand2說明:結果不保存但影響條件碼標志。TST實現(xiàn)按位與, TEQ實現(xiàn)按位異或 前導零計數(shù)CLZ指令格式:OP cond Rd, Rm說明:CLZ指令對Rm中值的前導零的個數(shù)進行計數(shù)結果送Rd中。若為31為1,
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025至2030年玉器擺件項目投資價值分析報告
- 2025至2030年水晶皂項目投資價值分析報告
- 2025至2030年氨基醇酸項目投資價值分析報告
- 2025至2030年操縱盤項目投資價值分析報告
- 《廣告原理與實務》課件-廣告原理與實務
- 2025至2030年圓形滴濾床旋轉布水器項目投資價值分析報告
- 2025至2030年吸收磁珠項目投資價值分析報告
- 2025至2030年單面單砂架砂光機項目投資價值分析報告
- 新底主管藥師個人計劃
- 音樂會安全常識培訓
- 全國統(tǒng)一卷試題及答案
- 銀行防搶防暴課件
- 水電工程驗收單
- 《哈哈鏡笑哈哈》名師課件2022
- 傳統(tǒng)皮影戲在小學藝術教育的應用與創(chuàng)新實踐
- 2025年國家會展中心上海有限責任公司招聘筆試參考題庫含答案解析
- 《大數(shù)據(jù)時代對會計行業(yè)產(chǎn)生的影響探究》10000字【論文】
- 保險精算師述職報告
- 2022浪潮英政服務器CS5260H2用戶手冊
- 【MOOC】交通運輸法規(guī)-中南大學 中國大學慕課MOOC答案
- 《真希望你也喜歡自己》房琪-讀書分享
評論
0/150
提交評論