ARM指令集尋址方式課件_第1頁
ARM指令集尋址方式課件_第2頁
ARM指令集尋址方式課件_第3頁
ARM指令集尋址方式課件_第4頁
ARM指令集尋址方式課件_第5頁
已閱讀5頁,還剩60頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第3章ARM指令集尋址方式ARM指令尋址方式可分為四大類:?數(shù)據(jù)處理指令尋址?Load/Store指令的尋址?

字、無符號字節(jié)尋址?

半字、有符號字節(jié)尋址?批量Load/Store指令的尋址?協(xié)處理指令尋址。TM內容提要3.1

ARM指令的編碼格式3.2

數(shù)據(jù)處理指令尋址方式3.3

Load/Store指令尋址3.4

批量Load/Store指令尋址方式3.5

協(xié)處理器指令尋址方式2TM3.1

ARM指令的編碼格式n

一般編碼格式n

指令條件碼3TM一般編碼格式n

每條ARM指令占有4個字節(jié),其指令長度為32位cond(bit[31:28])

指令執(zhí)行的條件碼type(bit[27:26])opcode(bit[24:21])S

(bit[20])指令類型碼指令操作碼;決定指令的操作結果是否影響CPSR的條件標志;Rn(bit[19:16])Rd(bit[15:12]

)包含第一個操作數(shù)的寄存器編碼;目標寄存器編碼;Operand2(bit[11:0)

指令第二個操作數(shù)。4TM4;n

ARM匯編指令語法格式:n

<opcode>{<cond>}{S}<Rd>,<Rn>,<operand2>5TM指令條件碼n

0000

EQn

0001

NE相等Z=1不相等Z=0n

0010

CS/HS

無符號大于等于n

0011

CC/LO

無等號小于C=1C=0n

0100

MIn

0101

PLn

0110

VSn

0111

VCn

1000

HIn

1001

LSn

1010

GEn

1011

LTn

1100

GTn

1101

LEn

1110

AL負數(shù)N=1非負數(shù)N=0上溢出V=1沒有上溢出無符號數(shù)大于無符號小于等于有符號數(shù)大于等于有符號數(shù)小于有符號數(shù)大于有符號數(shù)小于/等于無條件執(zhí)行V=0C=1且Z=0C=0或Z=1N=1且V=1

N=0且V=0N=1且V=0

N=0且V=1Z=0且N=VZ=1或N!=V6TM3.2

數(shù)據(jù)處理指令尋址方式n

數(shù)據(jù)處理指令第2操作數(shù)的構成方式n

具體尋址類型7TM數(shù)據(jù)處理指令第2操作數(shù)的構成方式n

立即數(shù)方式n

每個立即數(shù)由一個8位的常數(shù)進行32位循環(huán)右移偶數(shù)位得到,其中循環(huán)右移的位數(shù)由一個4位二進制的兩倍表示。即:n

<immediate>=immed_8進行32位循環(huán)右移(2*rotate_4)位8TMZAHn

寄存器方式n

操作數(shù)即為寄存器的數(shù)值n

如:

MOV

R3,R2nADD

R0,R1,R29TMn

寄存器移位方式n

操作數(shù)為寄存器的數(shù)值做相應的移位而得到。在ARM指令中移位操作包括n

LSL

邏輯左移n

LSR

邏輯右移n

ASL

算術左移

與LSL等價n

ASR

算術右移n

ROR

循環(huán)右移n

RRX

帶擴展的循環(huán)右移10TM11TM具體尋址類型n

1.第二操作數(shù)為立即數(shù)n

匯編語法格式:#<immediate>12TMn

2.第二操作數(shù)為寄存器n

匯編語法格式:<Rm>13TMn

3.第二操作數(shù)為寄存器移位方式,且移位的位數(shù)為一個5位的立即數(shù)n

匯編語法格式:<Rm>,<shift>

#<shift_imm>14TMn

4.第二操作數(shù)為寄存器移位方式,且移位數(shù)值放在寄存器中n

匯編語法格式:<Rm>,<shift>

<Rs>15TMn

5.第二操作數(shù)為寄存器進行RRX移位得到n

匯編語法格式:<Rm>,RRX16TM3.3

Load/Store指令尋址n

Load/Store指令是對內存進行存儲/加載數(shù)據(jù)操作的指令,根據(jù)訪問的數(shù)據(jù)格式的不同,將這類指令的尋址分為字、無符號字節(jié)的Load/Store指令尋址和半字、有符號字節(jié)Load/Store指令尋址兩大類。17TM地址計算方法n

各種類型的Load/Store指令的尋址方式有兩部分組成:n

一部分為一個基址寄存器,可以為任一個通用

寄存器;n

另一部分為一個地址偏移量,可以加到基址寄

存器,也可以從基址寄存器中減去這個數(shù)值。有三

種形式:立即數(shù)、寄存器、寄存器及一個移位常數(shù)。18TM地址計算方法n

該尋址方式的操作數(shù)地址計算方法有3種:n

前變址不回寫法(偏移量方法)

:基址寄存器的值和地址偏移量作加減法,

生成操作數(shù)的地址。n

前變址回寫法(事先更新方法):基址寄存器的值和地址偏移量作加減

法,生成操作數(shù)的地址。指令執(zhí)行后,這個生成的操作

數(shù)地址被寫入基址寄存器。n

后變址回寫法(事后更新方法)

:指令將基址寄存器的值作為操作數(shù)的

地址執(zhí)行指令,然后基址寄存器的值和地址偏移量作加

減法,生成操作數(shù)的地址,并寫入基址寄存器。19TM地址計算方法n

1.寄存器間接尋址n寄存器間接尋址就是以寄存器中的值作為操作數(shù)的地址,而操作數(shù)本身存放在存儲器中。例如以下指令:LDR

R0,[R1]STR

R0,[R1];R0

←[R1];[R1]←

R0nn20TMn

2.基址加變址尋址n

前變址法:基地址寄存器中的值和地址偏移量先作加減運算,生成的操作數(shù)作為內存訪問的地址。n

后變址法:將基地址寄存器中的值直接作為內存訪問的地址進行操作,內存訪問完畢后基地址寄存器中的值和地址偏移量作加減運算,并更新基地址寄存器。21TMn

2.基址加變址尋址n

前變址法:基地址寄存器中的值和地址偏移量先作加減運算,生成的操作數(shù)作為內存訪問的地址。n

后變址法:將基地址寄存器中的值直接作為內存訪問的地址進行操作,內存訪問完畢后基地址寄存器中的值和地址偏移量作加減運算,并更新基地址寄存器。22TM字、無符號字節(jié)尋址n

匯編指令語法格式為:n

LDR

{<cond>}{B}{T}<Rd>,<addressing_mode>n

STR

{<cond>}{B}{T}<Rd>,<addressing_mode>23TM24TM字、無符號字節(jié)尋址n其中,<>號內的項是必須的,{

}號內的項是

可選的。<address_mode>表示第2個操作數(shù)的內存地

址,共有9種格式。1.

[<Rn>,#+/-<offset_12>]2.

[<Rn>,+/-<Rm>]前變址不回寫法(偏移量方法)3.

[<Rn>,+/-<Rm>,<shift>

#<shift_imm>]4.

[<Rn>,#+/-<offset_12>]!5.

[<Rn>,+/-<Rm>]!前變址回寫法(事先更新方法)6.

[<Rn>,+/-<Rm>,<shift>

#<shift_imm>]!7.

[<Rn>],#+/-<offset_12>8.

[<Rn>],+/-<Rm>后變址回寫法(事后更新方法)9.

[<Rn>],+/-<Rm>,<shift>

#<shift_imm>25TM字、無符號字節(jié)尋址1.

[<Rn>,#+/-<offset_12>]<Rn>為基址寄存器,<offset_12>為地址偏移

量。內存地址address為基址寄存器Rn的值加上/減

去偏移量offset_12。例如:

LDR

R0,[R1,#4]

;將內存單元R1+4中的字讀取到R0LDR

R0,[R1,#-4];將內存單元R1-4中的字讀取到R0

該尋址方式適合訪問結構化數(shù)據(jù)的數(shù)據(jù)成員、

參數(shù)的存取以及棧中數(shù)據(jù)訪問。2.[<Rn>,+/-<Rm>]<Rn>為基址寄存器,<Rm>為索引寄存器

。

內存地址address為基址寄存器Rn的值加上/減去索

引寄存器Rm的值。例如:

LDR

R0,[R1,R2]

;將內存單元R1+R2中的字讀取到R0

。LDR

R0,[R1,-R2]

;將內存單元R1-R2中的字讀取到R0

該尋址方式適合訪問字節(jié)數(shù)組中的數(shù)據(jù)成員。3.[<Rn>,+/-<Rm>

,<shift>

#<shift_imm>]內存地址address為基址寄存器Rn的值加上/減

去地址偏移量。該地址偏移量由索引寄存器Rm的值

通過移位得到。例如:

LDR

R0,[R1,R2,LSL

#2]

;將內存單元(R1+R2*4)中的字數(shù)據(jù)讀取到R0寄存器

當數(shù)組中的數(shù)據(jù)成員長度大于1個字節(jié)時,使用

該尋址方式可高效率地訪問數(shù)組中的數(shù)據(jù)成員。注意:當R15用作Rn時,內存基地址為當前指令地址加8字節(jié)偏移量;當R15用作Rm時,會產生不可預知的結果;26TM字、無符號字節(jié)尋址4.[<Rn>,#+/-<offset_12>]!!

更新基址

寄存器的值

,當指令執(zhí)行的條件滿足時,生成的地址值將寫

入基址寄存器Rn中,即事先更新方式。例如:

LDR

R0,[R1,#4]!

;將內存單元(R1+4)中的字數(shù)據(jù)

;讀取到R0中,同時R1=R1+4

該尋址方式適合訪問數(shù)組時,自動進行數(shù)組下

標的更新。5.

[<Rn>,+/-<Rm>]!內存地址address為基址寄存器Rn的值加上/減

去索引寄存器Rm的值。當指令執(zhí)行的條件滿足時,

生成的地址值將寫入基址寄存器中,即事先更新方

式。例如:

LDR

R0,[R1,R2]!

;將內存單元(R1+R2)中的字數(shù)據(jù)讀

;取到R0寄存器中,同時R1=R1+R2

_x000C_ARM指令尋址方式6.

[<Rn>,+/-<Rm>

,<shift>

#<shift_imm>]!內存地址address為基址寄存器Rn的值加上/減

去地址偏移量。該地址偏移量由索引寄存器Rm的值

通過移位得到。當指令執(zhí)行的條件滿足時,生成的

地址值將寫入基址寄存器中,即事先更新方式。例如:

LDR

R0,[R1,R2,LSL

#2]!

;將內存單元(R1+R2*4)

;中的字數(shù)據(jù)讀取到R0寄存器,同時R1=R1+R2*4注意:當R15用作Rn

或Rm時,會產生不可預知的結果;當Rn

和Rm是同一個寄存器時,會產生不可預知的結果;在ARM

V6及以上沒有這個限制。27TM字、無符號字節(jié)尋址7.[<Rn>],#+/-<offset_12>內存地址為基址寄存器Rn的值。當指令執(zhí)行的

條件滿足時,將基址寄存器Rn的值加上/減去地址

偏移量生成新的地址值,并將其寫入基址寄存器中,

即事后更新方式。例如:

LDR

R0,[R1],#4

;將內存單元R1中的字數(shù)據(jù)讀取

;到R0寄存器中,然后R1=R1+48.

[<Rn>],+/-<Rm>內存地址address為基址寄存器Rn的值。當指令

執(zhí)行的條件滿足時,將基址寄存器Rn的值加上/減

去索引寄存器Rm的值生成新的地址值,并將其寫入

基址寄存器中,即事后更新方式。例如:

LDR

R0,[R1],R2

;將內存單元R1中的字數(shù)據(jù)讀取到

;R0寄存器中,然后R1=R1+R29.

[<Rn>],+/-<Rm>

,<shift>

#<shift_imm>內存地址address為基址寄存器Rn的值。當指令

執(zhí)行的條件滿足時,將基址寄存器Rn的值加上/減

去地址偏移量生成新的地址值,并將其寫入基址寄

存器中,即事后更新方式。該地址偏移量由索引寄

存器Rm的值通過移位得到。例如:

LDR

R0,[R1],R2,LSL

#2

;將內存單元R1中的字數(shù)據(jù)

;讀取到R0寄存器中,然后R1=R1+R2*4注意:當R15用作Rn

或Rm時,會產生不可預知的結果;當Rn

和Rm是同一個寄存器時,會產生不可預知的結果;在ARM

V6及以上沒有這個限制

。28TMn

1.Addressing_mode中的偏移量為立即數(shù)n

前變址不回寫形式:[<Rn>,#+/-<immed_offset>]n

前變址回寫形式:[<Rn>,#+/-<immed_offset>]!n

后變址回寫形式:[<Rn>],#+/-<immed_offset>29TMn

偏移量為立即數(shù)的指令編碼類型匯編語法格式n

W

Pn

0

1n

1

0n

1

1[<Rn>,#+/-<immed_offset>][<Rn>],#+/-<immed_offset>[<Rn>,#+/-<immed_offset>]!30TMn

2.Addressing_mode中的偏移量為寄存器的值n

前變址不回寫形式:[<Rn>,+/-<Rm>]n

前變址回寫形式:

[<Rn>,+/-<Rm>]!n

后變址回寫形式:

[<Rn>],+/-<Rm>31TMn

偏移量為寄存器的指令編碼類型對應關系匯編語法格式n

W

Pn

0

1

[<Rn>,+/-<Rm>]n

1

0

[<Rn>],+/-<Rm>n

1

1

[<Rn>,+/-<Rm>]!32TMn

3.Addressing_mode中的偏移量通過寄存器移位得到n

前變址不回寫形式:[<Rn>,+/-<Rm>,<shift>#shift_amount

]n

前變址回寫形式:[<Rn>,+/-<Rm>,<shift>#shift_amount]!n

后變址回寫形式:[<Rn>],+/-<Rm>,<shift>#shift_amount33TMn

偏移量為移位寄存器的指令編碼類型對應關系n

W

Pn

0

1n

1

0n

1

1匯編語法格式[<Rn>,+/-<Rm>,<shift>#shift_amount][<Rn>],+/-<Rm>,<shift>#shift_amount[<Rn>,+/-<Rm>,<shift>#shift_amount]!34TM半字、有符號字節(jié)尋址n

這類指令可用來加載有符號字節(jié)、加載有符號半字、加載/存儲無符號半字。n

Load/Store指令對半字、有符號字節(jié)操作指令編碼格式如下:35TMn

加載有符號字節(jié)到寄存器:n

LDR

{<cond>}SB

<Rd>,<addressing_mode>n

加載有符號半字到寄存器:n

LDR

{<cond>}SH

<Rd>,<addressing_mode>n

加載無符號半字到寄存器:n

LDR

{<cond>}H

<Rd>,<addressing_mode>n

存儲無符號半字到內存:n

STR

{<cond>}H

<Rd>,<addressing_mode>36TMn

其中,<>號內的項是必須的,{

}號內的項是

可選的。<address_mode>

表示第2個操作數(shù)的內存單

元地址,共有6種尋址方式。n

1.

[<Rn>,#+/-<offset_8>]n

2.

[<Rn>,+/-<Rm>]n

3.

[<Rn>,#+/-<offset_8>]!n

4.

[<Rn>,+/-<Rm>]!n

5.

[<Rn>],#+/-<offset_8>n

6.

[<Rn>],+/-<Rm>37TM1.[<Rn>,#+/-<offset_8>]<Rn>為基址寄存器,<offset_8>為地址偏移

量。內存地址address為基址寄存器Rn的值加上/減

去偏移量offset_8。例如:

LDRSB

R0,[R1,#3]

;將內存單元(R1+3)中的帶符號字節(jié)數(shù)據(jù)讀取到R0寄

存器中,R0中高24位設置成該字節(jié)數(shù)據(jù)的最高符號位2.[<Rn>,+/-<Rm>]

<Rn>為基址寄存器,<Rm>為索引寄存器。

內存地址address為基址寄存器Rn的值加上/減去索

引寄存器Rm的值。例如:

STRH

R0,[R1,R2]

;將寄存器R0中的低16位半字數(shù)據(jù)保存到內存單元

(R1+R2)中注意:當R15用作Rn時,內存基地址為當前指令地址加8字節(jié)偏移量;當R15用作Rm時,會產生不可預知的結果;38TM3.[<Rn>,#+/-<offset_8>]!!

更新基址

寄存器的值,內存地址address為基址寄存器Rn的值加上/減

去地址偏移量offset_8。當指令執(zhí)行的條件滿足時,

生成的地址值將寫入基址寄存器Rn中,即事先更新

方式。例如:

LDRSH

R7,[R6,#2]!

;將內存單元(R6+2)中的帶符號半字數(shù)據(jù)讀取到R7

中,并將R7的高16位設置成該半字數(shù)據(jù)的最高符號位,

同時R6=R6+24.[<Rn>,+/-<Rm>]!內存地址address為基址寄存器Rn的值加上/減

去索引寄存器Rm的值。當指令執(zhí)行的條件滿足時,

生成的地址值將寫入基址寄存器中,即事先更新方

式。例如:

LDRH

R0,[R1,R2]!

;將內存單元(R1+R2)中的半字數(shù)據(jù)讀取到R0寄存器中,R0的高16位設置成0,同時R1=R1+R2注意:當R15用作Rn

或Rm時,會產生不可預知的結果;當Rn

和Rm是同一個寄存器時,會產生不可預知的結果;在ARM

V6及以上沒有這個限制。39TM5.[<Rn>],#+/-<offset_8>內存地址為基址寄存器Rn的值。當指令執(zhí)行的

條件滿足時,將基址寄存器Rn的值加上/減去地址

偏移量offset_8生成新的地址值,并將其寫入基址寄

存器中,即事后更新方式。例如:

STRH

R0,[R1],#8

;將R0寄存器中的低16位半字數(shù)據(jù)讀取到內存單元

(R1)中,指令執(zhí)行后R1=R1+86.[<Rn>],+/-<Rm>內存地址address為基址寄存器Rn的值。當指令

執(zhí)行的條件滿足時,將基址寄存器Rn的值加上/減

去索引寄存器Rm的值生成新的地址值,并將其寫入

基址寄存器中,即事后更新方式。例如:

STRH

R0,[R1],R2

;將R0寄存器中的低16位半字數(shù)據(jù)讀取到內存單元

(R1)中,同時指令執(zhí)行后R1=R1+R2注意:當R15用作Rn

或Rm時,會產生不可預知的結果;當Rn

和Rm是同一個寄存器時,會產生不可預知的結果;在ARM

V6及以上沒有這個限制。40TMn

1.Addressing_mode中的偏移量為立即數(shù)n

前變址不回寫形式:[<Rn>,#+/-<immed_offset8>]n

前變址回寫形式:[<Rn>,#+/-<immed_offset8>]!n

后變址回寫形式:[<Rn>],#+/-<immed_offset8>41TMn

偏移量為立即數(shù)的指令編碼類型n

W

Pn

0

1n

1

0n

1

1匯編語法格式[<Rn>,#+/-<immed_offset8>][<Rn>],#+/-<immed_offset8>[<Rn>,#+/-<immed_offset8>]!42TMn

2.Addressing_mode中的偏移量為寄存器的值n

前變址不回寫形式:

[<Rn>,+/-<Rm>]n

前變址回寫形式:

[<Rn>,+/-<

Rm

>]!n

后變址回寫形式:

[<Rn>],+/-<

Rm

>43TMn

偏移量為寄存器值的指令編碼類型對應關系匯編語法格式n

W

Pn

0

1n

1

0n

1

1[<Rn>,+/-<

Rm

>][<Rn>],+/-<

Rm

>[<Rn>,+/-<

Rm

>]!44TM3.4

批量Load/Store指令尋址方式n

ARM指令系統(tǒng)提供了批量Load/Store指令尋址方式,即通常所說的多寄存器尋址,也就是一次可以傳送幾個寄存器的值,允許一條指令最多傳送16個寄存器。n

一條批量Load/Store指令可以實現(xiàn)在一組寄存器和一塊連續(xù)的內存單元之間傳輸數(shù)據(jù)。45TM編碼格式n

批量加載:n

LDM

{<cond>}<addr_mode>

<Rn>

{!},

<registers>{^}n

批量存儲:n

STM

{<cond>}<addr_mode>

<Rn>

{!},

<registers>{^}46TMn

其中,指令中寄存器和內存單元的對應關系滿

足這樣的規(guī)則,即編號低的寄存器對應于內存中低地址單元,編號高的寄存器對應于內存中高地址單元,<Rn>存放內存地址塊的起始地址值。!

的作用是用于更新<Rn>n

<address_mode>

表示地址的變化方

式,有以下4種方式。n

IA(Increment

After)事后遞增方式,每次數(shù)據(jù)傳送后地址加4;n

IB(Increment

Before)事先遞增方式,每次數(shù)據(jù)傳送前地址加4

;n

DA(Decrement

After)事后遞減方式,每次數(shù)據(jù)傳送后地址減4

;n

DB(Decrement

Before)事先遞減方式,每次數(shù)據(jù)傳送前地址減4

;47TMn

register_list表示要加載或存儲的寄存器列表,bit[15:0]可以表示16個寄存器,如果某位為1,則該位的位置作為寄存器的編號,此寄存器參預加載或存儲。n

匯編語法中寄存器列表的格式為:{R0,R3,R5}{R1-R3}

或{R1,R2,R3}48TMn

register_list表示要加載或存儲的寄存器列表,bit[15:0]可以表示16個寄存器,如果某位為1,則該位的位置作為寄存器的編號,此寄存器參預加載或存儲。n

S用于恢復CPSR和強制用戶位。當程序計數(shù)器PC包含在LDM指令的register_list中,且S為1時,則當前模式的SPSR被拷貝到CPSR中,使處理器的程序返回和狀態(tài)的恢復成為一個原子操作。如果register_list中不包含程序計數(shù)器PC,S為1則加載或存儲的是用戶模式下的寄存器組。49TMn

注意事項:n

指令中寄存器和連續(xù)內存地址單元的對應關系:編號低的寄存器對應內存低地址單元,編號高的寄存器對應內存高地址單元。50TM內存操作n

后增IA

(Increment

After)

:每次數(shù)據(jù)傳送后地址加4;n

先增IB

(Increment

Before)

:每次數(shù)據(jù)傳送前地址加4

;n

后減DA

(Decrement

After)

:每次數(shù)據(jù)傳送后地址減4

;n

先減DB

(Decrement

Before)

:每次數(shù)據(jù)傳送前地址減4

;51TMn

它們與指令編碼中P、U的對應關如下表所示n

LDM/STM的地址變化方式n

addr_mode

P

Un

D

An

I

An

D

Bn

I

B0

00

11

01

152TM堆棧操作n

<address_mode>的另外一種形式n

堆棧(stacks)是一個按特定順序進行存取的存儲區(qū),操

作順序為“后進先出”

。n

根據(jù)數(shù)據(jù)棧的增長方向,堆??煞譃閮煞N:n

向上生長棧:數(shù)據(jù)棧向內存地址增加的方向生長,

稱為遞增堆棧,或Ascending棧。n

向下生長棧:數(shù)據(jù)棧向內存地址減小的方向生長,

稱為遞減堆棧,或Descending棧。535TM堆棧操作n

堆棧指針SP可以指向不同的位置。n

當堆棧指

針指向最后一個壓入堆棧的有效數(shù)據(jù)項,稱為

滿堆棧(Full棧);n

堆棧指針指向下一個待壓入數(shù)據(jù)的空位置,稱為空堆棧(Empty棧)。54TM堆棧操作n

<address_mode>的另外一種形式n

綜合這兩種特點可以有以下4種數(shù)據(jù)棧:n

FA(Full

Ascending)n

FD(Full

Descending)n

EA(Empty

Ascending)n

ED(Empty

Descending)55TM堆棧操作n

兩段代碼的執(zhí)行

溫馨提示

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

評論

0/150

提交評論