版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、21:361ARM開發(fā)工具簡(jiǎn)介ARM應(yīng)用軟件的開發(fā)工具分別有:編譯軟件匯編軟件連接軟件調(diào)試軟件嵌入式實(shí)時(shí)操作系統(tǒng)函數(shù)庫(kù)評(píng)估板JTAG仿真器在線仿真器21:362目前常用的調(diào)試方法:1.指令集模擬器用軟件仿真,方便用戶在PC機(jī)上完成一部分簡(jiǎn)單的調(diào)試工作。2.駐留監(jiān)控軟件運(yùn)行在目標(biāo)板上的一段程序。調(diào)試軟件通過(guò)通信接口,與該軟件進(jìn)行交互,駐留監(jiān)控軟件控制系統(tǒng)程序的執(zhí)行過(guò)程,以便進(jìn)行相應(yīng)的調(diào)試。3.JTAG仿真器通過(guò)ARM芯片的JTAG邊界掃描口進(jìn)行調(diào)試的設(shè)備。4.在線仿真器使用帶有方針頭的硬件設(shè)備,完全取代目標(biāo)板上的CPU,提供更加深入的調(diào)試功能。21:363集成開發(fā)環(huán)境:1.ARM SDT 2.5
2、2.ARM ADS(ARM Developer Suite)3.Multi 2000美國(guó)Green Hills軟件公司開發(fā)的,支持C/C+/Embedded C+/Ada 95/Fortran編程語(yǔ)言,Windows/UNIX平臺(tái)4.TRACE32-ICD德國(guó)luaterbach公司開發(fā),旋極公司代理5.Hitool for ARM(上海祥佑數(shù)碼科技)6.Embest IDE(深圳英蓓特)7.ADS(武漢創(chuàng)維特)21:364ARM SDT包含的應(yīng)用軟件工具:armcc:ARM的C編譯器,兼容于ANSI Ctcc:Thumb的C編譯器armasm:支持ARM和Thumb的編譯器armlink:A
3、RM連接器,連接一個(gè)和多個(gè)目標(biāo)文件,最終生成ELF格式的可執(zhí)行映像文件armsd:ARM和Thumb的符號(hào)調(diào)試器21:365第三章第三章 ARM指令集指令集3.1 ARM指令集概述指令集概述3.2 ARM尋址方式尋址方式3.3 ARM指令詳細(xì)介紹指令詳細(xì)介紹 21:3663.1 ARM指令集概述指令集概述ARM指令集是指令集是32位的,程序的啟動(dòng)都是從位的,程序的啟動(dòng)都是從ARM指令集開始。所有的指令集開始。所有的ARM指令集都可以指令集都可以是有條件執(zhí)行的。本節(jié)從以下三個(gè)方面介紹:是有條件執(zhí)行的。本節(jié)從以下三個(gè)方面介紹:3.1.1 3.1.1 指令集編碼指令集編碼 3.1.2 3.1.2 條
4、件執(zhí)行條件執(zhí)行 3.1.3 3.1.3 指令分類及指令格式指令分類及指令格式 21:3673.1.1ARM指令集指令集編碼編碼 ARM指令集是以指令集是以32位二進(jìn)制編碼的方式給位二進(jìn)制編碼的方式給出的。出的。 大部分的指令編碼中定義了第一操作數(shù)、第大部分的指令編碼中定義了第一操作數(shù)、第二操作數(shù)、目的操作數(shù)、條件標(biāo)志影響位以及二操作數(shù)、目的操作數(shù)、條件標(biāo)志影響位以及每條指令所對(duì)應(yīng)的不同功能實(shí)現(xiàn)的二進(jìn)制位。每條指令所對(duì)應(yīng)的不同功能實(shí)現(xiàn)的二進(jìn)制位。 每條每條32位位ARM指令都具有不同的二進(jìn)制編指令都具有不同的二進(jìn)制編碼方式,和不同的指令功能相對(duì)應(yīng)碼方式,和不同的指令功能相對(duì)應(yīng) 。21:368編碼
5、表如下:21:3693.1.2條件執(zhí)行條件執(zhí)行 ARM ARM指令根據(jù)指令根據(jù)CPSRCPSR中的條件位自動(dòng)判斷是否中的條件位自動(dòng)判斷是否執(zhí)行指令,在條件滿足時(shí),指令執(zhí)行,否則指執(zhí)行指令,在條件滿足時(shí),指令執(zhí)行,否則指令被忽略。令被忽略。 在在ARM的指令編碼表中,統(tǒng)一占用編碼的的指令編碼表中,統(tǒng)一占用編碼的最高四位最高四位31:28來(lái)表示來(lái)表示“條件碼條件碼”(即(即“cond”)。)。 21:3610條件域表?xiàng)l件域表1條件碼條件碼后綴后綴標(biāo)標(biāo) 志志含含 義義0000EQZ置位置位相等相等0001NEZ清零清零不等不等0010CSC置位置位無(wú)符號(hào)無(wú)符號(hào)=0011CCC清零清零無(wú)符號(hào)無(wú)符號(hào) 1
6、001LSC清零清零Z置位置位無(wú)符號(hào)無(wú)符號(hào)=1011LTN不等于不等于V帶符號(hào)帶符號(hào) 1101LEZ置位或置位或N不等不等于于V帶符號(hào)數(shù)帶符號(hào)數(shù)=1110AL忽略忽略無(wú)條件執(zhí)行無(wú)條件執(zhí)行 1111 NV 無(wú)無(wú) 未使用未使用21:36123.1.3指令分類及指令格式指令分類及指令格式 ARM指令集可以分為六大類,分別為數(shù)據(jù)指令集可以分為六大類,分別為數(shù)據(jù)處理指令、處理指令、Load/Store指令、跳轉(zhuǎn)指令、程序指令、跳轉(zhuǎn)指令、程序狀態(tài)寄存器處理指令、協(xié)處理器指令和異常產(chǎn)狀態(tài)寄存器處理指令、協(xié)處理器指令和異常產(chǎn)生指令。生指令。 ARM指令使用的基本格式如下:指令使用的基本格式如下:opcodec
7、ondS Rd,Rn,operand2 Fopcode操作碼;指令助記符,如操作碼;指令助記符,如LDR、STR等。等。Fcond可選的條件碼;執(zhí)行條件,如可選的條件碼;執(zhí)行條件,如EQ、NE等。等。FS可選后綴;若指定可選后綴;若指定“S”,則根據(jù)指令執(zhí)行結(jié)果更新,則根據(jù)指令執(zhí)行結(jié)果更新CPSR中的條件碼。中的條件碼。FRd 目標(biāo)寄存器。目標(biāo)寄存器。FRn 存放第存放第1操作數(shù)的寄存器。操作數(shù)的寄存器。Foperand2第第2個(gè)操作數(shù)個(gè)操作數(shù)21:3613指令格式使用舉例:指令格式使用舉例:LDR R0,R1;讀??;讀取R1地址上的存儲(chǔ)單元內(nèi)容,地址上的存儲(chǔ)單元內(nèi)容, 執(zhí)行條件執(zhí)行條件ALB
8、EQ DATAEVEN;條件執(zhí)行分支指令,執(zhí)行條件;條件執(zhí)行分支指令,執(zhí)行條件 EQ,即相等則跳轉(zhuǎn)到,即相等則跳轉(zhuǎn)到DATAEVENADDS R2,R1,#1;加法指令,;加法指令,R2R1+1,影響,影響CPSR 寄存器(寄存器(S)SUBNES R2,R1,#0 x20;條件執(zhí)行的減法運(yùn)算,執(zhí)行;條件執(zhí)行的減法運(yùn)算,執(zhí)行 條件條件NE,R2 R1-0 x20, 影響影響CPSR寄存器(寄存器(S)21:36143.2 ARM尋址方式3.2.1 3.2.1 立即尋址立即尋址3.2.2 3.2.2 寄存器尋址寄存器尋址3.2.3 3.2.3 寄存器間接尋址寄存器間接尋址3.2.4 3.2.4
9、基址加偏址尋址基址加偏址尋址 3.2.5 3.2.5 堆棧尋址堆棧尋址 3.2.6 3.2.6 塊拷貝尋址塊拷貝尋址 3.2.7 3.2.7 相對(duì)尋址相對(duì)尋址 21:36153.2.1 3.2.1 立即尋址立即尋址F立即尋址也叫立即數(shù)尋址,這是一種特殊的尋址方立即尋址也叫立即數(shù)尋址,這是一種特殊的尋址方式,操作數(shù)本身就在指令中給出,只要取出指令也式,操作數(shù)本身就在指令中給出,只要取出指令也就取到了操作數(shù),這個(gè)操作數(shù)被稱為立即數(shù),對(duì)應(yīng)就取到了操作數(shù),這個(gè)操作數(shù)被稱為立即數(shù),對(duì)應(yīng)的尋址方式也就叫做立即尋址。例如以下指令:的尋址方式也就叫做立即尋址。例如以下指令:n ADDADD R0R0,R0R0
10、,1 1/ /* *R0R0R0R01 1* */ /n ADD ADD R0R0,R0R0,0 x3f0 x3f/ /* *R0R0R0R00 x3f0 x3f* */ /F 在以上兩條指令中,第二個(gè)源操作數(shù)即為立即數(shù),在以上兩條指令中,第二個(gè)源操作數(shù)即為立即數(shù),要求以要求以“”為前綴,對(duì)于以十六進(jìn)制表示的立即為前綴,對(duì)于以十六進(jìn)制表示的立即數(shù),還要求在數(shù),還要求在“”后加上后加上“0 x”0 x”。21:3616有效立即數(shù)問(wèn)題在32位指令編碼中存放32位立即數(shù)的方法是:在ARM數(shù)據(jù)處理指令中,當(dāng)參與操作的第二操作數(shù)為立即數(shù)型時(shí),每個(gè)立即數(shù)都是采用一個(gè)8位的常數(shù)循環(huán)右移偶數(shù)位而間接得到。其中
11、循環(huán)右移的位數(shù)由一個(gè)4位二進(jìn)制的兩倍表示,如果立即數(shù)記作,8位常數(shù)記作immed_8,4位的循環(huán)右移值記作rotate_imm,有效的立即數(shù)是由一個(gè)8位的立即數(shù)循環(huán)右移偶數(shù)位得到。因此有效立即數(shù)immediateimmediate可以表示成:=immed_8=immed_8循環(huán)右移(循環(huán)右移(2 2rotate_immrotate_imm)21:3617有效立即數(shù)問(wèn)題數(shù)據(jù)處理指令二進(jìn)制編碼21:36183.2.23.2.2寄存器尋址寄存器尋址 寄存器尋址就是利用寄存器中的數(shù)值作為操作寄存器尋址就是利用寄存器中的數(shù)值作為操作數(shù),這種尋址方式是一種執(zhí)行效率較高的尋址方數(shù),這種尋址方式是一種執(zhí)行效率
12、較高的尋址方式。以下指令:式。以下指令: ADDADDR0R0,R1R1,R2R2/ /* *R0R1R0R1R2R2* */ / 該指令的執(zhí)行效果是將寄存器該指令的執(zhí)行效果是將寄存器R1R1和和R2R2的內(nèi)容的內(nèi)容相加,其結(jié)果存放在寄存器相加,其結(jié)果存放在寄存器R0R0中中。21:3619寄存器尋址寄存器尋址第二操作數(shù)為寄存器型的移位操作第二操作數(shù)為寄存器型的移位操作 在在ARMARM指令的數(shù)據(jù)處理指令中參與操作的第二操作數(shù)指令的數(shù)據(jù)處理指令中參與操作的第二操作數(shù)為寄存器型時(shí),在執(zhí)行寄存器尋址操作時(shí),可以選為寄存器型時(shí),在執(zhí)行寄存器尋址操作時(shí),可以選擇是否對(duì)第二操作數(shù)進(jìn)行移位,即擇是否對(duì)第二
13、操作數(shù)進(jìn)行移位,即RmRm,其中其中RmRm稱為第二操作數(shù)寄存器,稱為第二操作數(shù)寄存器,用來(lái)指定移用來(lái)指定移位類型(位類型(LSLLSL,LSRLSR,ASLASL,ASRASR,RORROR或或RRXRRX)和移位位數(shù)。移位位數(shù)可以是和移位位數(shù)。移位位數(shù)可以是5 5位立即數(shù)位立即數(shù)(#)或寄存器()或寄存器(RsRs)。在指令執(zhí)行時(shí)將移)。在指令執(zhí)行時(shí)將移位后的內(nèi)容作為第二操作數(shù)參與運(yùn)算。例如指令:位后的內(nèi)容作為第二操作數(shù)參與運(yùn)算。例如指令: ADD R3ADD R3,R2R2,R1R1,LSR #2 LSR #2 ;R3R3R2 + R1R2 + R14 421:3620寄存器尋址第二操作
14、數(shù)移位方式第二操作數(shù)移位方式 LSL:邏輯左移,空出的最低有效位用:邏輯左移,空出的最低有效位用0填充。填充。LSR:邏輯右移,空出的最高有效位用:邏輯右移,空出的最高有效位用0填充。填充。ASL:算術(shù)左移,由于左移空出的有效位用:算術(shù)左移,由于左移空出的有效位用0填充,因此填充,因此 它與它與LSL同義。同義。ASR:算術(shù)右移,算術(shù)移位的對(duì)象是帶符號(hào)數(shù),移位過(guò)程中必須:算術(shù)右移,算術(shù)移位的對(duì)象是帶符號(hào)數(shù),移位過(guò)程中必須保持操作數(shù)的符號(hào)不變。如果源操作數(shù)是正數(shù),空出的最保持操作數(shù)的符號(hào)不變。如果源操作數(shù)是正數(shù),空出的最高有效位用高有效位用0填充,如果是負(fù)數(shù)用填充,如果是負(fù)數(shù)用1填充。填充。 R
15、OR:循環(huán)右移,移出的字的最低有效位依次填入空出的最高有:循環(huán)右移,移出的字的最低有效位依次填入空出的最高有效位。效位。RRX:帶擴(kuò)展的循環(huán)右移。將寄存器的內(nèi)容循環(huán)右移:帶擴(kuò)展的循環(huán)右移。將寄存器的內(nèi)容循環(huán)右移1位,空位用位,空位用原來(lái)原來(lái)C標(biāo)志位填充。標(biāo)志位填充。21:3621寄存器尋址 21:3622寄存器尋址寄存器尋址第二操作數(shù)的移位位數(shù)第二操作數(shù)的移位位數(shù) 移位位數(shù)可以用立即數(shù)方式或者寄存器方式給出移位位數(shù)可以用立即數(shù)方式或者寄存器方式給出, ,如下如下所示:所示:ADD R3ADD R3,R2R2,R1R1,LSR #2LSR #2 ;R3 R3 R2 + R1R2 + R14 4A
16、DD R3ADD R3,R2R2,R1R1,LSR R4LSR R4 ;R3 R3 R2 + R1R2 + R12 2R4R4寄存器寄存器R1的內(nèi)容分別邏輯右移的內(nèi)容分別邏輯右移2位、位、R4位(亦即位(亦即R14、R12R4),再與寄存器),再與寄存器R2的內(nèi)容相加,結(jié)果放的內(nèi)容相加,結(jié)果放入入R3中。中。 21:36233.2.33.2.3寄存器間接尋址寄存器間接尋址 寄存器間接尋址就是以寄存器中的值作為操作數(shù)寄存器間接尋址就是以寄存器中的值作為操作數(shù)的地址,而操作數(shù)本身存放在存儲(chǔ)器中。例如以的地址,而操作數(shù)本身存放在存儲(chǔ)器中。例如以下指令:下指令: LDRLDRR0R0,R1R1/ /*
17、 *R0R1R0R1* */ / STR STRR0R0,R1R1/ /* *R1R0R1R0* */ / 第一條指令將以第一條指令將以R1R1的值為地址的存儲(chǔ)器中的數(shù)據(jù)傳的值為地址的存儲(chǔ)器中的數(shù)據(jù)傳送到送到R0R0中。第二條指令將中。第二條指令將R0R0的值傳送到以的值傳送到以R1R1的值的值為地址的存儲(chǔ)器中。為地址的存儲(chǔ)器中。21:36243.2.43.2.4基址加偏址尋址基址加偏址尋址 基址變址尋址就是將寄存器(該寄存器一般稱作基址變址尋址就是將寄存器(該寄存器一般稱作基址寄存器)的內(nèi)容與指令中給出的地址偏移量基址寄存器)的內(nèi)容與指令中給出的地址偏移量相加,從而得到一個(gè)操作數(shù)的有效地址。
18、變址尋相加,從而得到一個(gè)操作數(shù)的有效地址。變址尋址方式常用于訪問(wèn)某基地址附近的地址單元。采址方式常用于訪問(wèn)某基地址附近的地址單元。采用變址尋址方式的指令又可以分為以下幾種形式:用變址尋址方式的指令又可以分為以下幾種形式:前變址模式:前變址模式:LDR R0LDR R0,R1R1,44;R0R0R1R144自動(dòng)變址模式:自動(dòng)變址模式:LDR R0LDR R0,R1R1,44?。籖0R1R0R144、R1R1R1R14 4后變址模式:后變址模式:LDR R0LDR R0,R1 R1 ,4 4;R0R1R0R1、R1R1R1R14 421:3625基址加偏址尋址基址加偏址尋址基址寄存器的地址偏移可以
19、是一個(gè)立即數(shù),也可基址寄存器的地址偏移可以是一個(gè)立即數(shù),也可以是另一個(gè)寄存器,并且在加到基址寄存器前還以是另一個(gè)寄存器,并且在加到基址寄存器前還可以經(jīng)過(guò)移位操作,如下所示:可以經(jīng)過(guò)移位操作,如下所示:LDR r0,r1,r2;r0mem32r1+r2LDR r0,r1,r2,LSL #2;r0r1+r2*4但常用的是立即數(shù)偏移的形式,地址偏移為寄存但常用的是立即數(shù)偏移的形式,地址偏移為寄存器形式的指令很少使用。器形式的指令很少使用。21:3626傳送數(shù)據(jù)類型傳送數(shù)據(jù)類型 傳送數(shù)據(jù)可以是有符號(hào)、無(wú)符號(hào)的傳送數(shù)據(jù)可以是有符號(hào)、無(wú)符號(hào)的8位、位、16位半字和位半字和32位字。位字。 相對(duì)應(yīng)的在指令中
20、增加一個(gè)字母表示數(shù)據(jù)相對(duì)應(yīng)的在指令中增加一個(gè)字母表示數(shù)據(jù)類型:類型:B:選擇字節(jié)操作:選擇字節(jié)操作H:選擇半字操作:選擇半字操作不加則選擇字操作不加則選擇字操作LDRB R0,R1;R0mem8R1LDRH R1,R0,#20;R1mem16R0+2021:36273.2.53.2.5堆棧尋址堆棧尋址F堆棧是一種數(shù)據(jù)結(jié)構(gòu),按先進(jìn)后出(堆棧是一種數(shù)據(jù)結(jié)構(gòu),按先進(jìn)后出(First In Last Out,F(xiàn)ILO)的方式工作,使用一個(gè)稱作堆棧指針)的方式工作,使用一個(gè)稱作堆棧指針的專用寄存器指示當(dāng)前的操作位置,堆棧指針總是的專用寄存器指示當(dāng)前的操作位置,堆棧指針總是指向棧頂。指向棧頂。F當(dāng)堆棧指針
21、指向最后壓入堆棧的數(shù)據(jù)時(shí),稱為滿堆當(dāng)堆棧指針指向最后壓入堆棧的數(shù)據(jù)時(shí),稱為滿堆棧(棧(Full Stack),而當(dāng)堆棧指針指向下一個(gè)將要放),而當(dāng)堆棧指針指向下一個(gè)將要放入數(shù)據(jù)的空位置時(shí),稱為空堆棧(入數(shù)據(jù)的空位置時(shí),稱為空堆棧(Empty Stack)。)。F即訪問(wèn)存儲(chǔ)器時(shí),存儲(chǔ)器的地址向高地址方向生長(zhǎng),即訪問(wèn)存儲(chǔ)器時(shí),存儲(chǔ)器的地址向高地址方向生長(zhǎng),稱為遞增堆棧(稱為遞增堆棧(ascending stack)。)。 存儲(chǔ)器的地址存儲(chǔ)器的地址向低地址方向生長(zhǎng),稱為遞減堆棧(向低地址方向生長(zhǎng),稱為遞減堆棧(descending stack)。)。 21:3628堆棧尋址堆棧尋址四種類型的堆棧工作
22、方式四種類型的堆棧工作方式 F滿遞增堆棧:堆棧指針指向最后壓入的數(shù)據(jù),滿遞增堆棧:堆棧指針指向最后壓入的數(shù)據(jù),且由低地址向高地址生成。且由低地址向高地址生成。F滿遞減堆棧:堆棧指針指向最后壓入的數(shù)據(jù),滿遞減堆棧:堆棧指針指向最后壓入的數(shù)據(jù),且由高地址向低地址生成。且由高地址向低地址生成。F空遞增堆棧:堆棧指針指向下一個(gè)將要放入數(shù)空遞增堆棧:堆棧指針指向下一個(gè)將要放入數(shù)據(jù)的空位置,且由低地址向高地址生成。據(jù)的空位置,且由低地址向高地址生成。F空遞減堆棧:堆棧指針指向下一個(gè)將要放入數(shù)空遞減堆棧:堆棧指針指向下一個(gè)將要放入數(shù)據(jù)的空位置,且由高地址向低地址生成據(jù)的空位置,且由高地址向低地址生成21:3
23、6293.2.6 3.2.6 塊拷貝尋址塊拷貝尋址F塊 拷 貝 尋 址 是 多 寄 存 器 傳 送 指 令塊 拷 貝 尋 址 是 多 寄 存 器 傳 送 指 令LDM/STM的尋址方式。的尋址方式。LDM/STM指令指令可以把存儲(chǔ)器中的一個(gè)數(shù)據(jù)塊加載到多個(gè)可以把存儲(chǔ)器中的一個(gè)數(shù)據(jù)塊加載到多個(gè)寄存器中,也可以把多個(gè)寄存器中的內(nèi)容寄存器中,也可以把多個(gè)寄存器中的內(nèi)容保存到存儲(chǔ)器中。尋址操作中的寄存器可保存到存儲(chǔ)器中。尋址操作中的寄存器可以是以是R0-R15這這16個(gè)寄存器的子集或是所有個(gè)寄存器的子集或是所有寄存器。寄存器。FLDM/STMLDM/STM指令依據(jù)其后綴名的不同其尋址指令依據(jù)其后綴名的
24、不同其尋址的方式也有很大不同,見下表。的方式也有很大不同,見下表。21:363021:3631IA操作完成后地址遞增IB地址先增而后完成操作DA操作完成后地址遞減DB地址先減而后完成操作FD滿遞減堆棧ED空遞減堆棧FA滿遞增堆棧EA空遞增堆棧21:3632ARM指令:STMFD SP! R1-R7,LR;入棧LDMFD SP! R1-R7,LR;出棧Thumb指令:PUSH R1-R7,LR;入棧POP R1-R7,LR;出棧21:36333.2.73.2.7相對(duì)尋址相對(duì)尋址 與基址變址尋址方式相類似,相對(duì)尋址以程與基址變址尋址方式相類似,相對(duì)尋址以程序計(jì)數(shù)器序計(jì)數(shù)器PCPC的當(dāng)前值為基地址,
25、指令中的地址標(biāo)的當(dāng)前值為基地址,指令中的地址標(biāo)號(hào)作為偏移量,將兩者相加之后得到操作數(shù)的有號(hào)作為偏移量,將兩者相加之后得到操作數(shù)的有效地址。以下程序段完成子程序的調(diào)用和返回,效地址。以下程序段完成子程序的調(diào)用和返回,跳轉(zhuǎn)指令跳轉(zhuǎn)指令BLBL采用了相對(duì)尋址方式:采用了相對(duì)尋址方式:BLNEXT;跳轉(zhuǎn)到子程序;跳轉(zhuǎn)到子程序 ;NEXT處執(zhí)行處執(zhí)行NEXTNEXTMOVMOVPCPC,LRLR;從子程序返回;從子程序返回 21:36343.3 3.3.1 3.3.1 數(shù)據(jù)處理指令數(shù)據(jù)處理指令3.3.2 Load/Store3.3.2 Load/Store指令指令3.3.3 3.3.3 程序狀態(tài)寄存器與
26、通用寄存器之間程序狀態(tài)寄存器與通用寄存器之間 的傳送指令的傳送指令3.3.4 3.3.4 轉(zhuǎn)移指令轉(zhuǎn)移指令3.3.5 3.3.5 異常中斷指令異常中斷指令3.3.6 3.3.6 協(xié)處理器指令協(xié)處理器指令21:36353.3.1 3.3.1 數(shù)據(jù)處理指令數(shù)據(jù)處理指令A(yù)RM的數(shù)據(jù)處理指令主要完成寄存器中數(shù)據(jù)的的數(shù)據(jù)處理指令主要完成寄存器中數(shù)據(jù)的算術(shù)和邏輯運(yùn)算操作。算術(shù)和邏輯運(yùn)算操作。 數(shù)據(jù)處理指令數(shù)據(jù)處理指令分類分類 數(shù)據(jù)處理指令二進(jìn)制編碼數(shù)據(jù)處理指令二進(jìn)制編碼 數(shù)據(jù)處理指令表數(shù)據(jù)處理指令表21:3636數(shù)據(jù)處理指令分類數(shù)據(jù)處理指令分類數(shù)據(jù)處理指令根據(jù)指令實(shí)現(xiàn)處理功能可分為以數(shù)據(jù)處理指令根據(jù)指令實(shí)
27、現(xiàn)處理功能可分為以下六類:下六類: 數(shù)據(jù)傳送指令;數(shù)據(jù)傳送指令; 算術(shù)運(yùn)算指令算術(shù)運(yùn)算指令; 邏輯運(yùn)算指令;邏輯運(yùn)算指令; 比較指令;比較指令; 測(cè)試指令;測(cè)試指令; 乘法指令。乘法指令。21:3637數(shù)據(jù)處理指令二進(jìn)制編碼數(shù)據(jù)處理指令二進(jìn)制編碼數(shù)據(jù)處理指令的二進(jìn)制編碼如下(前數(shù)據(jù)處理指令的二進(jìn)制編碼如下(前5類格式):類格式):21:3638靈活的第二操作數(shù)靈活的第二操作數(shù)兩種可能形式:兩種可能形式:1、#immed_8r:常量必須對(duì)應(yīng)于:常量必須對(duì)應(yīng)于8位位圖在位位圖在32位字中被循位字中被循環(huán)偶數(shù)位(環(huán)偶數(shù)位(0、2、4、8、28、30)后的值。)后的值。合法常量:合法常量:0 xFF、
28、0 x104、0 xFF0、0 xF000000F非法常量:非法常量:0 x101、0 x102、0 xFF003、0 xF000001F2、Rm ,shift:Rm為存儲(chǔ)第二操作數(shù)數(shù)據(jù)的為存儲(chǔ)第二操作數(shù)數(shù)據(jù)的RAM寄存器,可用以寄存器,可用以下方法對(duì)寄存器中的位圖進(jìn)行移位。下方法對(duì)寄存器中的位圖進(jìn)行移位。type Rs ASR、LSL、LSR、ROR中的一種中的一種21:3639數(shù)據(jù)處理指令指令表數(shù)據(jù)處理指令指令表數(shù)據(jù)處理指令的詳細(xì)列表如下:數(shù)據(jù)處理指令的詳細(xì)列表如下:操作碼操作碼24:21助記符助記符意義意義效果效果0000AND邏輯位與邏輯位與Rd = Rn AND Op20001EOR
29、邏輯位異或邏輯位異或Rd = Rn EOR Op20010SUB減減Rd = Rn - Op20011RSB反向減反向減Rd = Op2 Rn0100ADD加加Rd = Rn + Op20101ADC帶進(jìn)位加帶進(jìn)位加Rd = Rn + Op2 + C0110SBC帶進(jìn)位減帶進(jìn)位減Rd = Rn - Op2 + C -10111RSC反向帶進(jìn)位減反向帶進(jìn)位減Rd = Op2 - Rn + C -11000TST測(cè)試測(cè)試根據(jù)根據(jù)Rn AND Op2設(shè)置條件碼設(shè)置條件碼1001TEQ測(cè)試相等測(cè)試相等根據(jù)根據(jù)Rn EOR Op2設(shè)置條件設(shè)置條件1010CMP比較比較根據(jù)根據(jù)Rn - Op2設(shè)置條件碼設(shè)
30、置條件碼1011CMN負(fù)數(shù)比較負(fù)數(shù)比較根據(jù)根據(jù)Rn + Op2設(shè)置條件碼設(shè)置條件碼1100ORR邏輯位或邏輯位或Rd = Rn OR Op21101MOV傳送傳送Rd = Op21110BIC位清零位清零Rd = Rn AND NOT Op21111MVN求反求反Rd = NOT Op221:36401、ADD、SUB、 RSB、 ADC、 SBC、RSC加、減、反減,不帶進(jìn)位和帶進(jìn)位條件碼標(biāo)志:條件碼標(biāo)志:若指定S,那么這些指令根據(jù)結(jié)果,更新NZCV。R15的使用:的使用:若將R15作為Rn使用,其值是指令的地址加8若使用R15作為Rd,則:l執(zhí)行轉(zhuǎn)移到結(jié)果對(duì)應(yīng)的地址l若使用后綴“S”,則將
31、當(dāng)前的SPSR拷貝到CPSR。可以使用這一點(diǎn)從異常返回。(在用戶模式或系統(tǒng)模式下當(dāng)將R15作為Rd使用時(shí),不要使用后綴“S”)l在有寄存器控制移位的任何數(shù)據(jù)處理指令中,不能將R15作為Rd或任何操作數(shù)來(lái)使用。21:3641例子:例子:ADD R2,R2,R3SUBS R8,R6,#240;根據(jù)結(jié)果設(shè)置標(biāo)志;根據(jù)結(jié)果設(shè)置標(biāo)志RSB R4,R4,#1280 ;1280R4ADCHI R11,R0,R3 ;只有標(biāo)志;只有標(biāo)志C置位且標(biāo)志置位且標(biāo)志Z清零時(shí)才執(zhí)行清零時(shí)才執(zhí)行RSCLES R0,R5,R0,LSL R4;有條件執(zhí)行,設(shè)置標(biāo)志;有條件執(zhí)行,設(shè)置標(biāo)志錯(cuò)例:錯(cuò)例:RSCLESR0,R15,R0
32、,LSL R4 ;R15不允許與被控制移不允許與被控制移位的寄存器一起使用位的寄存器一起使用21:3642多個(gè)字節(jié)算術(shù)運(yùn)算舉例:多個(gè)字節(jié)算術(shù)運(yùn)算舉例:R2,R3中的64位整數(shù)與R0,R1中的64位整數(shù)相加,結(jié)果放在R4,R5中:ADDS R4,R0,R2;加低有效位ADC R5,R1,R3;加高有效位96位減法舉例:SUBS R3,R6,R9SBCS R4,R7,R10SBC R5,R8,R1121:3643AND、ORR、EOR、BIC邏輯與、或、異或、位清零條件碼標(biāo)志:條件碼標(biāo)志:若指定S,則這些指令將:1)根據(jù)結(jié)果更新標(biāo)志N、Z2)在計(jì)算Operand2時(shí)更新標(biāo)志C3)不影響標(biāo)志VR15
33、的使用:的使用:同前21:3644例子:例子:AND R9,R2,#0 xFF00ORREQ R2,R0,R5;Z置位則或操作置位則或操作EORS R0,R0,R3,ROR R6BICNES R8,R10,R0,RRX;Z清零則操作位清零,同清零則操作位清零,同時(shí)值為時(shí)值為CPSR相應(yīng)位相應(yīng)位錯(cuò)例:錯(cuò)例:EORS R8,R15,R0,ROR R6 ;R15不允許與被控制移位不允許與被控制移位的寄存器一起出現(xiàn)的寄存器一起出現(xiàn)21:3645MOV和MVN(傳送和取反傳送)條件碼標(biāo)志:條件碼標(biāo)志:若指定S,則這些指令將:1)根據(jù)結(jié)果更新標(biāo)志N、Z2)在計(jì)算Operand2時(shí)更新標(biāo)志C3)不影響標(biāo)志V
34、R15的使用:的使用:同前21:3646例子:例子:MOV R5,R2MVNNE R11,#0 xF00000B;Z清零則操作清零則操作MOVS R0,R0,ASR R3錯(cuò)例:錯(cuò)例:MVN R15,R3,ASR R0;R15不允許與被控制移位的寄存器一起出現(xiàn)21:3647CMP和CMN(比較和比較反值)用法:用法:這些指令將寄存器的值與Operand2進(jìn)行比較。它們根據(jù)結(jié)果更新條件標(biāo)志碼,但結(jié)果不放到任何寄存器中CMP:根據(jù)Rn - Op2設(shè)置條件碼,結(jié)果丟棄CMN:根據(jù)Rn + Op2設(shè)置條件碼,結(jié)果丟棄條件碼標(biāo)志:條件碼標(biāo)志:根據(jù)結(jié)果更新條件碼NZCVR15的使用:的使用:若將R15用作R
35、n,則使用的值是指令的地址加8。在有寄存器控制移位的任何數(shù)據(jù)處理指令中,不能將R15用于任何操作。21:3648TST和TEQ(測(cè)試和測(cè)試相等)句法:句法:TST cond Rn,Operand2TEQ cond Rn,Operand2用法:用法:TST:對(duì)Rn的值和Operand2的值進(jìn)行按位“與”操作,設(shè)置條件碼,丟棄結(jié)果TEQ:對(duì)Rn的值和OPerand2的值進(jìn)行按位“異或”操作,設(shè)置條件碼,丟棄結(jié)果條件碼設(shè)置和條件碼設(shè)置和R15的使用:的使用:與前相同21:3649乘法指令:二進(jìn)制編碼:二進(jìn)制編碼:31 28 27 24 23 2120 19 16 15 12 11 87 4 3 0c
36、ond 0000 mul S Rd/RdHi Rn/RdLoRs1001Rm乘法指令乘法指令操作碼23:21 助記符意義效果000MUL乘(32位結(jié)果)Rd(RmRs)31:0001MLA乘累加( 32位結(jié)果)Rd(RmRs+Rn)31:0100UMULL無(wú)符號(hào)數(shù)長(zhǎng)乘RdHi:RdLoRmRs101UMLAL無(wú)符號(hào)長(zhǎng)乘累加RdHi:RdLo+=RmRs110SMULL有符號(hào)數(shù)長(zhǎng)乘RdHi:RdLoRmRs111SMLAL 有符號(hào)數(shù)長(zhǎng)乘累加 RdHi:RdLo+=RmRs21:3650MUL和MLA(乘法和乘加)句法:句法:MUL cond S Rd,Rm,RsMLA cond S Rd,Rm,
37、Rs,RnR15不能用作不能用作Rd、Rm、Rs、Rn。Rn不能與不能與Rm相同。相同。條件標(biāo)志碼:條件標(biāo)志碼:若指定S,則:1)根據(jù)結(jié)果更新標(biāo)志N和Z2)不影響標(biāo)志V3)在ARM4v及以前版本中C不可靠4)在ARM5v及以后版本中不影響標(biāo)志C21:3651 例子:例子:MUL R10,R2,R5MLA R10,R2,R1,R5MULS R0,R2,R2錯(cuò)例:錯(cuò)例:MUL R15,R1,R321:3652UMULL、UMLAL、SMULL、SMLAL(無(wú)符號(hào)和帶符號(hào)長(zhǎng)整數(shù)乘法和乘加,結(jié)果為64位)句法:句法:Op cond S RdLo,RdHi,Rm,Rs其中:RdLo,RdHi:ARM結(jié)果
38、寄存器。對(duì)于UMLAL和SMLAL,用于保存加法值 Rm,Rs:操作數(shù)寄存器21:3653SMULxy、SMLAxy、SMULWy、SMLAWy、SMLALxySMULxy(帶符號(hào)乘法 16位16位,結(jié)果為32位)句法:句法:SMUL cond Rd,Rm,Rs其中: :B或T,B意味著使用Rm的低端15:0 T意味著使用高端31:16 : B或T,B意味著使用Rs的低端15:0 T意味著使用高端31:16 Rd :結(jié)果寄存器Rm,Rs :乘數(shù)寄存器SMLAxy(帶符號(hào)乘加 16位16位,加法為32位)21:3654SMULWy(帶符號(hào)乘 32位16位,結(jié)果為32位)句法:句法:SMULW c
39、ond Rd,Rm,RsSMLAWy(帶符號(hào)乘加 32位16位,加法為32位)句法:句法:SMLAW cond Rd,Rm,RsSMLALLxy (帶符號(hào)乘加 16位 16位 加法為64位)句法:句法:SMLALL cond RdLo,RdHi,Rm,Rs21:36553.3.2 Load/Store指令 ARM的數(shù)據(jù)存取指令Load/Store是唯一用于寄存器和存儲(chǔ)器之間進(jìn)行數(shù)據(jù)傳送的指令。ARM指令集中有三種基本的數(shù)據(jù)存取指令: 單寄存器的存取指令(LDR,STR) 多寄存器存取指令(LDM,STM) 單寄存器交換指令(SWP) 21:3656單寄存器的存取指令單寄存器的存取指令 單寄存器
40、存取指令是ARM在寄存器和存儲(chǔ)器間傳送單個(gè)字節(jié)和字的最靈活方式。根據(jù)傳送數(shù)據(jù)的類型不同,單個(gè)寄存器存取指令又可以分為以下兩類: 單字和無(wú)符號(hào)字節(jié)的數(shù)據(jù)傳送指令 半字和有符號(hào)字節(jié)的數(shù)據(jù)傳送指令21:3657單字和無(wú)符號(hào)字節(jié)的數(shù)據(jù)傳送指令單字和無(wú)符號(hào)字節(jié)的數(shù)據(jù)傳送指令這一類數(shù)據(jù)傳送指令的編碼格式如下:?jiǎn)巫趾蜔o(wú)符號(hào)字節(jié)數(shù)據(jù)傳送指令的二進(jìn)制編碼21:3658單字和無(wú)符號(hào)字節(jié)的數(shù)據(jù)傳送指令單字和無(wú)符號(hào)字節(jié)的數(shù)據(jù)傳送指令這一類數(shù)據(jù)傳送指令的匯編格式如下: 前變址格式LDR|STR B Rd, Rn, ! 后變址格式LDR|STR B T Rd, Rn, 相對(duì)PC的形式LDR|STR B Rd, LABEL
41、 21:3659半字和有符號(hào)字節(jié)的數(shù)據(jù)傳送指令半字和有符號(hào)字節(jié)的數(shù)據(jù)傳送指令這一類數(shù)據(jù)傳送格式的二進(jìn)制編碼如下:21:3660半字和有符號(hào)字節(jié)的數(shù)據(jù)傳送指令半字和有符號(hào)字節(jié)的數(shù)據(jù)傳送指令這一類數(shù)據(jù)傳送指令的匯編格式如下: 前變址格式LDR|STR H|SH|SB Rd, Rn, ! 后變址格式LDR|STR H|SH|SB Rd, Rn, 式中是#或#Rm;H|SH|SB選擇傳送數(shù)據(jù)類型;其它部分的匯編器格式與傳送字和無(wú)符號(hào)字節(jié)相同。21:3661說(shuō)明:說(shuō)明:半字傳送的地址對(duì)準(zhǔn):半字傳送的地址對(duì)準(zhǔn):半字傳送的地址必須是偶數(shù)。例:例:LDREQSH R11,R6;(有條件的)R11R6,加載16
42、位半字,帶符號(hào)擴(kuò)展到32位LDRSB R6,constf;加載位于標(biāo)號(hào)constf地址中的字節(jié),帶符號(hào)擴(kuò)展STRH R4,R0,R1!;R4R0+R1,存儲(chǔ)最低的有效半字到R0+R1地址開始的兩個(gè)字節(jié),地址回寫到R021:3662LDR和和STR雙字雙字加載兩個(gè)相鄰的寄存器和存儲(chǔ)兩個(gè)相鄰的寄存器,64位雙字。句法:句法:opcondD Rd,RnopcondD Rd,Rn,offset!opcondD Rd,labelopcondD Rd,Rn,offset其中:Rd加載或存儲(chǔ)寄存器其中一個(gè),另一個(gè)是R(d+1)。 Rd必須是偶數(shù)寄存器,且不是R14 Rn 除非指令為零偏移,或不帶回寫的前索引
43、,否 則,Rn不允許與Rd和R(d+1)相同21:3663例句:LDRD R6,R11LDRMID R4,R7,R2STRD R4,R9,#24STRD R0,R9,R2!LDRD R1,R6STRD R14,R9,#36STRD R2,R3,R621:3664多寄存器存取指令多寄存器存取指令LDM/STMLDM/STM多寄存器傳送指令可以用一條指令將多寄存器傳送指令可以用一條指令將16個(gè)可見寄個(gè)可見寄存器(存器(R0R15)的任意子集合(或全部)存儲(chǔ))的任意子集合(或全部)存儲(chǔ)到存儲(chǔ)器或從存儲(chǔ)器中讀取數(shù)據(jù)到該寄存器集合到存儲(chǔ)器或從存儲(chǔ)器中讀取數(shù)據(jù)到該寄存器集合中。與單寄存器存取指令相比,多寄
44、存器數(shù)據(jù)存中。與單寄存器存取指令相比,多寄存器數(shù)據(jù)存取可用的尋址模式更加有限。取可用的尋址模式更加有限。多寄存器存取指令多寄存器存取指令的匯編格式如下:的匯編格式如下:LDM/STM Rn!, 21:3665多寄存器存取指令多寄存器存取指令多寄存器存取指令的二進(jìn)制編碼如下:21:3666LDM/STM Rn!, add modeIA、IB、DA、DB、FD、ED、FA、EARn基址寄存器,裝有傳送數(shù)據(jù)的初始地址,Rn不允許是R15registers加載或存儲(chǔ)寄存器列表。不允許在用戶模式或系統(tǒng)模式下使用,兩種目的:1)LDM且reglist中包含PC(R15),那么除了正常的多寄存器傳送外,將S
45、PSR也拷貝到CPSR中。僅在異常模式下使用。2)數(shù)據(jù)傳入或傳出的是用戶模式的寄存器,而不是當(dāng)前模式的寄存器21:3667例句:例句:LDMIAR8,R0,R2,R9STMDBR1!,R3-R6,R11,R12STMFDR13!,R0,R4-R7,LRLDMFDR13!,R0,R4-R7,PCSTMIAR5!,R5,R4,R921:3668單寄存器交換指令(SWP)其二進(jìn)制編碼格式如下:其匯編格式如下:SWP B Rd,Rm,Rn 例句:例句:SWPB R1,R1,R0 交換字節(jié),將R0中的字節(jié)數(shù)據(jù)讀取到R1中,同時(shí)將R1中的數(shù)據(jù)寫入到R0中SWP R1,R2,R3 交換字節(jié)數(shù)據(jù),將R3中的數(shù)
46、據(jù)讀取到R1中,同時(shí)將R2中的數(shù)據(jù)寫入到R3中21:36693.3.33.3.3程序狀態(tài)寄存器與通用寄存器之間的傳送指令程序狀態(tài)寄存器與通用寄存器之間的傳送指令A(yù)RM指令中有兩條指令,用于在狀態(tài)寄存器和指令中有兩條指令,用于在狀態(tài)寄存器和通用寄存器之間傳送數(shù)據(jù)。修改狀態(tài)寄存器一通用寄存器之間傳送數(shù)據(jù)。修改狀態(tài)寄存器一般是通過(guò)般是通過(guò)“讀取修改寫回讀取修改寫回”三個(gè)步驟的操三個(gè)步驟的操作來(lái)實(shí)現(xiàn)的。作來(lái)實(shí)現(xiàn)的。 這兩條指令分別是:這兩條指令分別是: 狀態(tài)寄存器到通用寄存器的傳送指令(狀態(tài)寄存器到通用寄存器的傳送指令(MRS) 通用寄存器到狀態(tài)寄存器的傳送指令(通用寄存器到狀態(tài)寄存器的傳送指令(MS
47、R) 21:3670MRS MRS的二進(jìn)制編碼如下:其匯編格式如下:MRS Rd,CPSR|SPSR 21:3671MSR MSR的二進(jìn)制編碼如下:其匯編格式如下:MSR CPSR_f | SPSR_f,#MSR CPSR_ | SPSR_,Rm 21:3672fieldc控制域屏蔽字節(jié)(PSR7:0)x擴(kuò)展域屏蔽字節(jié)(PSR15:8)s狀態(tài)域屏蔽字節(jié)(PSR23:16)f標(biāo)志域屏蔽字節(jié)(PSR31:24)21:36733.3.43.3.4轉(zhuǎn)移指令轉(zhuǎn)移指令A(yù)RM的轉(zhuǎn)移指令可以從當(dāng)前指令向前或向后的的轉(zhuǎn)移指令可以從當(dāng)前指令向前或向后的32MB的地址空間跳轉(zhuǎn),根據(jù)完成的功能它可的地址空間跳轉(zhuǎn),根據(jù)
48、完成的功能它可以分為以下以分為以下4種種 : B 轉(zhuǎn)移指令轉(zhuǎn)移指令 BL 帶鏈接的轉(zhuǎn)移指令帶鏈接的轉(zhuǎn)移指令 BX 帶狀態(tài)切換的轉(zhuǎn)移指令帶狀態(tài)切換的轉(zhuǎn)移指令 BLX 帶鏈接和狀態(tài)切換的轉(zhuǎn)移指令帶鏈接和狀態(tài)切換的轉(zhuǎn)移指令 21:3674轉(zhuǎn)移和轉(zhuǎn)移鏈接指令(轉(zhuǎn)移和轉(zhuǎn)移鏈接指令(B,BL) 轉(zhuǎn)移指令轉(zhuǎn)移指令B B在程序中完成簡(jiǎn)單的跳轉(zhuǎn)指令,可以跳轉(zhuǎn)到指令中指定的在程序中完成簡(jiǎn)單的跳轉(zhuǎn)指令,可以跳轉(zhuǎn)到指令中指定的目的地址。目的地址。BLBL指令完全象轉(zhuǎn)移指令一樣地執(zhí)行轉(zhuǎn)移,同時(shí)把轉(zhuǎn)移后指令完全象轉(zhuǎn)移指令一樣地執(zhí)行轉(zhuǎn)移,同時(shí)把轉(zhuǎn)移后面緊接的一條指令的地址保存到鏈接寄存器面緊接的一條指令的地址保存到鏈接寄存
49、器LRLR(R14R14)。)。 二進(jìn)制編碼如下:二進(jìn)制編碼如下:匯編格式如下:匯編格式如下:BL 21:3675轉(zhuǎn)移交換和轉(zhuǎn)移鏈接交換(轉(zhuǎn)移交換和轉(zhuǎn)移鏈接交換(BX,BLX) 這些指令用于支持這些指令用于支持ThumbThumb(1616位)指令集的位)指令集的ARMARM芯片,程序可以通過(guò)這芯片,程序可以通過(guò)這些指令完成處理器從些指令完成處理器從ARMARM狀態(tài)到狀態(tài)到ThumbThumb狀態(tài)的切換。類似的狀態(tài)的切換。類似的ThumbThumb指令可指令可以使處理器切換回以使處理器切換回3232位位ARMARM指令。指令。 二進(jìn)制編碼如下:二進(jìn)制編碼如下:匯編格式如下:匯編格式如下:1:
50、BLX Rm2: BLX 21:36763.3.63.3.6異常中斷指令異常中斷指令異常中斷指令可以分為一下兩種:異常中斷指令可以分為一下兩種: 軟件中斷指令(軟件中斷指令(SWI) 斷點(diǎn)指令(斷點(diǎn)指令(BKPT僅用于僅用于v5T體系)體系)軟件中斷指令軟件中斷指令SWI用于產(chǎn)生用于產(chǎn)生SWI異常中斷,用異常中斷,用來(lái)實(shí)現(xiàn)在用戶模式下對(duì)操作系統(tǒng)中特權(quán)模式的來(lái)實(shí)現(xiàn)在用戶模式下對(duì)操作系統(tǒng)中特權(quán)模式的程序的調(diào)用;程序的調(diào)用;斷點(diǎn)中斷指令斷點(diǎn)中斷指令BKPT主要用于產(chǎn)生軟件斷點(diǎn),主要用于產(chǎn)生軟件斷點(diǎn),供調(diào)試程序用。供調(diào)試程序用。 21:3677SWISWISWI(SoftWare InterruptSoftWare Interrupt)代表)代表“軟件中斷軟件中斷”,用于用,用于用戶調(diào)用操作系統(tǒng)戶調(diào)用操作系統(tǒng)的系統(tǒng)例程的系統(tǒng)例程,常稱為,常稱為“監(jiān)控調(diào)用監(jiān)控調(diào)用”。它。它將處理器置于監(jiān)控(將處理器置于監(jiān)控
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 農(nóng)村生活污水治理經(jīng)濟(jì)效益分析
- 果品綜合檢測(cè)投資預(yù)算
- 促進(jìn)夜經(jīng)濟(jì)持續(xù)健康發(fā)展實(shí)施方案
- 參加課后服務(wù)心得體會(huì)(23篇)
- 血檢專項(xiàng)練習(xí)練習(xí)測(cè)試卷
- 2017年寧夏中考數(shù)學(xué)試卷(學(xué)生版)
- 高考數(shù)學(xué)復(fù)習(xí)解答題提高第一輪專題復(fù)習(xí)專題02直線與平面所成角(線面角)(含探索性問(wèn)題)(典型題型歸類訓(xùn)練)(學(xué)生版+解析)
- 語(yǔ)文統(tǒng)編版(2024)一年級(jí)上冊(cè)小書包 課件
- 第1章 結(jié)構(gòu)與性能概論課件
- 高中語(yǔ)文必修《五代史伶官傳序》(同步教學(xué)課件)
- 供應(yīng)鏈墊資采購(gòu)合同范本
- 大學(xué)生安全教育(在校篇)學(xué)習(xí)通課后章節(jié)答案期末考試題庫(kù)2023年
- 如何“泡”開詩(shī)歌公開課一等獎(jiǎng)市賽課獲獎(jiǎng)?wù)n件
- 中班科學(xué)《森林運(yùn)動(dòng)會(huì)》 課件
- 升降機(jī)安全管理培訓(xùn)
- 血管瘤及脈管畸形
- DB42-T 1965-2023 公開版地圖地理信息審查工作規(guī)程
- 門衛(wèi)保安反恐演練方案
- GB/T 42313-2023電力儲(chǔ)能系統(tǒng)術(shù)語(yǔ)
- 有限元填空選擇題及答案
- 《教育的第三只眼》讀書筆記思維導(dǎo)圖
評(píng)論
0/150
提交評(píng)論