ARM培訓(xùn)講義提綱_第1頁
ARM培訓(xùn)講義提綱_第2頁
ARM培訓(xùn)講義提綱_第3頁
ARM培訓(xùn)講義提綱_第4頁
ARM培訓(xùn)講義提綱_第5頁
已閱讀5頁,還剩60頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

ARM培訓(xùn)講義提綱

單位:西安電子科技大學(xué)

編寫:何方勇

編寫日期:2005年7月1日

緒言

此次ARM培訓(xùn)要緊使各位受訓(xùn)人員了解嵌入式操作系統(tǒng)的差不多概

念、軟硬件構(gòu)成框架、以及把握與嵌入式操作系統(tǒng)有關(guān)的知識。

隨著通信技術(shù)、電子技術(shù)、運(yùn)算機(jī)技術(shù)、以及微電子技術(shù)的進(jìn)展,片

上系統(tǒng)(SOC)成為當(dāng)今電子技術(shù)的一大主流;這就使得嵌入式開發(fā)技術(shù)

成為整個(gè)業(yè)界的研究和開發(fā)的熱點(diǎn)。我們明白當(dāng)今世界通信與信息技術(shù)進(jìn)

展的3大熱點(diǎn)是:第三、四代移動(dòng)通信技術(shù)、數(shù)字電視技術(shù)、以及汽車電

子技術(shù)。在這幾個(gè)熱點(diǎn)技術(shù)的最終實(shí)現(xiàn)將被納入系統(tǒng)的概念,其中嵌入式

系統(tǒng)將在里面伴有重要的角色。

嵌入式操作系統(tǒng)

嵌入式操作系統(tǒng)作為一種新的系統(tǒng),我們應(yīng)該如何把握呢?以下我們

將簡要介紹一下嵌入式系統(tǒng)。

嵌入式操作系統(tǒng)的差不多概念

從字面上,我們能夠從兩方面懂得嵌入式系統(tǒng):嵌入式、系統(tǒng)。列舉

適當(dāng)?shù)睦又v明嵌入式系統(tǒng)的應(yīng)用:手持設(shè)備、大型通信設(shè)備

嵌入式操作系統(tǒng)與常見的單片機(jī)、DSP系統(tǒng)的細(xì)微區(qū)別

從系統(tǒng)的概念動(dòng)身講解:單片機(jī)、和DSP是沒有系統(tǒng)概念的

嵌入式操作系統(tǒng)的軟硬件平臺開發(fā)

1.嵌入式操作系統(tǒng)的硬件構(gòu)成:核心處理器、程序和數(shù)據(jù)儲備器、總

線系統(tǒng)、外圍接口(設(shè)備)等;

2.嵌入式操作系統(tǒng)的軟件構(gòu)成:系統(tǒng)軟件、API、底層驅(qū)動(dòng)、應(yīng)用程

序等

結(jié)合微機(jī)系統(tǒng)操作系統(tǒng)講解

3.常見嵌入式操作系統(tǒng):VxWorks、PSOS、LINUX,WINCE、NUC

LEUS等,各種操作系統(tǒng)的區(qū)別和優(yōu)點(diǎn)及應(yīng)用前景。

如何樣進(jìn)行嵌入式系統(tǒng)設(shè)計(jì)

嵌入式系統(tǒng)開發(fā)是此次培訓(xùn)的要緊內(nèi)容,那我們應(yīng)該從以下方面入手:

處理器、硬件部件、操作系統(tǒng)、編程語言、軟件開發(fā)工具、硬件開發(fā)平臺、

軟件組成。

處理器:速度、10設(shè)計(jì)指標(biāo)、處理器的軟件支持、處理器調(diào)試方式、

處理器提供商的信譽(yù)度;

硬件部件:硬件實(shí)現(xiàn)難度、開發(fā)周期、市場前景、供貨情形

操作系統(tǒng):產(chǎn)品的適合度、調(diào)試難度、代碼結(jié)構(gòu)、可開發(fā)潛力、移植

可行性

編程語言:高級語言、低級語言

軟件開發(fā)工具:系統(tǒng)調(diào)試功能如何、支持的庫函數(shù)、開發(fā)商的軟件支

嵌入式處理器

在以上的講義中我們簡要提到了嵌入式開發(fā)的各方面的咨詢題,接下

來我們將從硬件開始講解。在嵌入式系統(tǒng)中,要緊以ARM芯片作為該系統(tǒng)

的核心芯片。

嵌入式處理器簡介

ARM是AdvancedRISCMachines的縮寫,ARM公司于1990成立,

ARM以低成本、低功耗、高性能迅速占據(jù)了全球市場。其產(chǎn)品廣泛應(yīng)用到

移動(dòng)通信、消費(fèi)電子、以及嵌入式市場。ARM公司不生產(chǎn)芯片,只是IP

供應(yīng)商,只做設(shè)計(jì)。

常見ARM處理器系列有:ARM7系歹U、ARM9系歹U、ARM9E系列、

ARM10系列、SecurCoreSC100、StrongARM、XScale。在此,我們要緊

講解ARM7系列、ARM9系列:

ARM7系列:0.9MIPS/MHz3級流水、馮?諾依曼結(jié)構(gòu);其內(nèi)核要緊有A

RM7TDMI和ARM720T;T:支持16位THUMB指令,D支持在片調(diào)試,

M增強(qiáng)型乘法器,產(chǎn)生全64位結(jié)果,I:嵌入式ICE硬件提供片上斷點(diǎn)和調(diào)

試點(diǎn)支持

ARM9系列:LlMIPS/MHz5級流水、哈佛結(jié)構(gòu);其內(nèi)核要緊有ARM9

20T、ARM722T和ARM940T;

基于ARM內(nèi)核的芯片擴(kuò)展

由于ARM公司只做IP,不生產(chǎn)具體的芯片;因此我們所使用的ARM

芯片差不多上全世界其他硬件芯片廠商在通過ARM公司的授權(quán),然后在此

基礎(chǔ)上進(jìn)行硬件擴(kuò)展,以滿足不同領(lǐng)域的需求。

下面,我們以三星公司的ARM芯片S3C2410X為例來簡要介紹基于A

RM內(nèi)核的芯片擴(kuò)展。

LCDLCD1/1____Ky\___r\|_BUSCONT.

CGNTDMA-------1/AXi-------ArbHo”Decode

H

USBHostCONT.BInlerruptCQNT.

Power

Extr.taslerB

<^>[Manayn^nt

NANDCON7U

NANDFlashBootaSMemoryCONT

Loader<^>[SRAM.NOR'SDRAM

CKxKGenerator

(MPIX)Bridge&DMA(4Ch)

UART0.1.2gg12c

USBDeMcegAI2S

p舊.

SDI/MMCBg.GPIO

Watchdog

TimerBRTC

U

BUSCONT

gADC

Aibltor.'DecodBS

Tlmer.'PWM

8PI0,1

0*3,4(Internal)

Figure1-1.S3C2410XBlockDiagram

ARM920T內(nèi)核詳解

現(xiàn)在基于ARM920T內(nèi)核的芯片逐步成為嵌入式系統(tǒng)芯片的主流,我們

有必基淫觸甘娃加.衛(wèi)星排一用空習(xí)物件開巖的箕碘山場的姓加囪加下

Figure1-1.ARM920TFunctionalBlockDiagram

下面我們將重點(diǎn)介紹ARM920T的協(xié)處理器CP15和內(nèi)存治理單元MM

u

協(xié)處理器CP15

內(nèi)存治理單元MMU

軟件開發(fā)

嵌入式系統(tǒng)的軟件開發(fā)包括:操作系統(tǒng)和應(yīng)用程序開發(fā)兩個(gè)方面。下

面我們進(jìn)一步講解基于ARM芯片的匯編語言。

ARM編程模型

ARM常見版本是V4和V5,現(xiàn)在要緊用的是V4,

處理器工作狀態(tài):ARM,THUMB

開關(guān)狀態(tài):進(jìn)入THUMB狀態(tài)、進(jìn)入ARM狀態(tài)

儲備器格式:大小端點(diǎn)格式

指令長度:32位、16位

數(shù)據(jù)類型:字,半字,字節(jié)

操作模式:7種

寄存器:31個(gè)通用寄存器和6個(gè)狀態(tài)寄存器

中斷:

ARM差不多尋址方式

寄存器尋址:

趕忙尋址:

寄存器移位尋址:

寄存器間接尋址:

變址尋址:

多寄存器尋址:

堆棧尋址:

塊拷貝尋址:

相對尋址:

ARM指令集

本章內(nèi)容是詳細(xì)講解ARM指令集。

ARM指令格式

313029282726252423222120191817161514131211109876543210

Cond00IOpcodesRnRdOperand2Data/Processing/

PSRTransfer

Cond000000AsRdRnRs1001RmMultiply

Cond0000IUAsRdHiRdLoRn1001RmMultiplyLong

Cond00010B00RnRd00001001RmSingleDataSwap

Cond0001001011111I111I110001RnBranchandExchange

Cond000Pu0WLRnRd00001SH1RmHalfwordDataTransfer:

registeroffset

Cond000Pu1WLRnRdOffset1SH1OffsetHalfwordDataTransfer:

immendiateoffset

Cond01IPuBwLRnRdOffsetSingleDataTransfer

Cond0111Undefined

Cond10oPuBwLRnRegisterListBlockDataTransfer

Cond101LOffsetBranch

Cond110PUBwLRnCRdCP#OffsetCoprocessorDataTransfer

CondI110CPOpcCRnCRdCP#CP0CRmCoprocessorDataOperation

CPCRmCoprocessorRegisterTransfer

Cond1110LCRnRdCP#CP1

Opc

Cond1111IgnoredbyprocessorSoftwareInterrupt

313029282726252423222120191817161514131211109876543210

表4—1:ARM指令集格式

注意:

某些指令碼沒有定義,但并不導(dǎo)致未定義指令陷阱顯現(xiàn),例如一個(gè)乘

法指令的第6位變?yōu)閘o不應(yīng)使用這些指令,因?yàn)樗鼈兊淖饔靡苍S會由以后

的ARM執(zhí)行

ARM指令集表:

下面表4—2、表4—3列出了ARM指令集:

表4一2:

MSRMoveregistertoPSRstatus/flagsPSR:=Rm

MULMultiplyRd:=RmxRs

MVNMovenegativeregisterRd:=0xFFFFFFFFEOR0p2

ORRORRd:=RnOROp2

RSBReverseSubtractRd:=Op2-Rn

RSCReverseSubtractwithCarryRd:=Op2-Rn-1+Carry

SBCSubtractwithCarryRd:=Rn-0p2-1+Carry

STCStorecoprocessorregistertomemoryaddress:=CRn

STMStoreMultipleStackmanipulation(Push)

STRStoreregistertomemory<address>:=Rd

SUBSubtractRd:=Rn-0p2

SWISoftwareInterruptOScall

SWPSwapregisterwithmemoryRd:=[Rn]?[Rn]:=Rm

TEQTestbitwiseequalityCPSRflags:=RnEOROp2

TSTTestbitsCPSRflags:=RnANDOp2

表4—3:ARM指令集

CodeSuffixFlagsMeaning

0000EQZsetequal

0001NEZclearnotequal

被*0010CSCsetunsignedhigherorsame

0011ccCclearunsignedlower

NJ0100MlNsetnegative

。101PLNclearpositiveorzero

0110VS\/sutoverflow

表力0111VCVclearnooverflow

意其1000HICsetandZclearunsignedhigher

1001LSCclearorZsetunsignedlowerorsame

個(gè)d1010GENequalsVgreaterorequal

時(shí),1011LTNnotequaltoVlessthan

1100GTZclearAND(NequalsV)greaterthan

PSF1101LEZsetOR(NnotequaltoV)lessthanorequal

1110AL(ignored)always

表4—4:ARM指令中的條件碼

ARM指令集詳解

★★1分支與交換(BX指令,Branch和Exchange指令):

該指令僅僅在條件為真時(shí)被執(zhí)行,參見表4—4。

該指令通過將一個(gè)通用寄存器Rn的內(nèi)容復(fù)制到程序計(jì)數(shù)器PC來執(zhí)行

一個(gè)分支。那個(gè)分支會引起管道流,并會按照Rn指定的地址再入。該指令

也承諾交換指令集。當(dāng)執(zhí)行該指令時(shí),Rn[O]的值決定了是否按照ARM指

令依舊THUMB指令對指令流進(jìn)行解碼。指令格式如下圖4—1所示:

312827242320191615121187430

|Cond|000l|001o|l11“111”111"OOO"Rn

[3:0]OperandRegister

IfbitOofRn=1,subsequentinstructionsdecodedasTHUMBinstructions

IfbitOofRn=0,subsequentinstructionsdecodedasARMinstructions

[31:28]ConditionField

圖4—1:BX指令格式

★指令循環(huán)時(shí)刻:

執(zhí)行BX指令占用2S+1N周期(與BL一樣),那個(gè)地點(diǎn)S和N分別代

表連續(xù)(S周期)和非連續(xù)(N周期)。

★匯編程序語法:

BX-分支和交換指令

BX{cond}Rn;{cond}為雙字母條件經(jīng)歷符(即條件碼),見

表4—4,而Rn表示一個(gè)有效寄存器(例如:R0)

★使用R15作操作數(shù):

如果將R15作操作數(shù),該情形未定義。

例:

ADRRO,Into_THUMB+1;產(chǎn)生分支目標(biāo)地址,bitO置位,進(jìn)入

THUMB狀態(tài)

BXR0;分支并改變到THUMB狀,R15(PC):=R

0

CODE16;匯編作為THUMB指令的后續(xù)碼

Into_THUMB

ADRR5,Back_to_ARM;產(chǎn)生分支目標(biāo)到字排列地址,bitO置

低,變回到ARM

BXR5;分支并變回到ARM狀態(tài),R15(PC):=R0

ALIGN;字排列

CODE32;匯編作為ARM指令的后續(xù)碼

Back_to_ARM

★★2分支與帶鏈接分支(B、BL)

3128272524230

|Cond|101|L|Offset

[24]Linkbit

0=Branch1=Branchwithlink

[31:28]ConditionField

圖4—2:B、BL指令格式

分支指令包含有一個(gè)有符號的2態(tài)補(bǔ)充24位偏移(相當(dāng)于25根地址線

+符號位,即+/-32M字節(jié))。這被左移兩位,符號擴(kuò)展至32位,并加到程序

計(jì)數(shù)器PC。因此該指令能夠指定+/-32M字節(jié)的分支。該指令偏置必須考慮

預(yù)取操作,它會引起程序計(jì)數(shù)器PC超前當(dāng)前指令2個(gè)字(8個(gè)字節(jié))。

超過+/-32M字節(jié)的分支必須使用偏置或事先裝入寄存器的絕對目標(biāo)。

在這種情形下,如果要求有帶鏈接類型的分支操作,應(yīng)當(dāng)將PC值人工存入

R14o

★鏈接位:

帶鏈接的分支(BL)將舊的PC寫入當(dāng)前儲備空間的鏈接寄存器(R1

4)o寫入R14的值被調(diào)整到承諾預(yù)取,并包含緊跟著“分支與鏈接指令”

的指令地址。注意CPSR不保留PC值,R14[l:0]總是清零。

從帶鏈接的分支返回,如果鏈接寄存器仍舊有效,可使用MOVPC,R1

4;或如果鏈接寄存器以被Rn存作堆棧指針,使用LDMRn!,{..PC}。

★指令循環(huán)時(shí)刻:

分支和帶鏈接分支指令占用2S+1N增加的周期(與BX一樣),那個(gè)地

點(diǎn)S和N分別代表連續(xù)(S周期)和內(nèi)部(I周期)。

★匯編程序語法:

什中的內(nèi)容任意,<>中的內(nèi)容必須顯現(xiàn)

B{L}{cond}<expression>

{L}常用要求帶鏈接分支的指令形式。如果缺省,R14

不受指令阻礙,即不將舊的PC值存入R14。

{cond}如表4—4中所示的雙字母助記符(條件碼),如果缺

省,默認(rèn)為AL(Always)o

〈expression〉目標(biāo)單元,匯編程序運(yùn)算偏移量。

312827262524212019161512110

s

|Cond|00||L|Opcode|llRn|Rd1Operand2

[15:12]Destinationregister

0=Branch1=Branchwithlink

[19:16]1stoperandregister

0=Branch1=Branchwithlink

[20]Setconditioncodes

0=Donotafterconditioncodes1=Setconditioncodes

[24:21]Operationcodes

0000=AND-Rd:=Op1ANDOp2

0001=EOR-Rd:=Op1EOROp2

0010=SUB-Rd:=0p1-Qp2

0011=RSB-Rd:=Op2-Op1

0100=ADD-Rd:=0p1+0p2

0101=ADC-Rd:=Op1+Op2+C

圖Z0110=SBC-Rd:=OP1-Op2+C-1

0111=RSC-Rd:=Op2-Op1+C-1

1000=TST-setconditioncodesonOp1ANDOp2

1001=TEOsetconditioncodesonOP1EOROp2

1010=CMP-setconditioncodeson0p1-0p2

1011=SMN-setconditioncodeson0p1+0p2

1100=ORR-Rd:=Op1OROp2

1101=MOV-Rd:=Op2

1110=BIC-Rd:=Op1ANDNOTOp2

1111=MVN-Rd:=NOTOp2

[25]Immediateoperand

0=Operand2isaregister1=Operand2isanimmediatevalue

[11:0]Operand2typeselection

[31:28]Conditionfield

圖4—3:數(shù)據(jù)處理指令

該指令通過對一或兩個(gè)操作數(shù)進(jìn)行指定的算術(shù)或邏輯運(yùn)算產(chǎn)生結(jié)果。

第一個(gè)操作數(shù)總是一個(gè)寄存器(Rn)。

按照指令中L(即D25)位的值,第二個(gè)操作數(shù)可能是一個(gè)移位寄存器

(Rm)或一個(gè)8位循環(huán)趕忙數(shù)(Imm)o按照指令中S位的值,確定該指令

的結(jié)果是否能夠愛護(hù)或更新CPSR中的條件碼。

5

THLL」二屬"/nnonn/1/-dec、r1iz^x/1口一^01cc、HR/de

AssemblerMnemonicOPCodeAction

1-0AND。000Operand1ANDoperand2

EOROOCHOperand1EORoperand2

多口才

WUB0010Operand1-operand2

RSB0011Operand2operand1

ADD0100Operand1+operand2

ADC:Operand1+operand2+carry

ST、SBC011。Operand1-operand2+carry-1

RSC0111Operand2-operand1+carry-1

I.L.工!

的書TST1000AsAND,butresultisnotwritten

則(TEQ1。。1AsEOR,butresultisnotwritten

CMPAsSUB.butresultisnotwritten

移不CMN1011AsADD,butresultisnotwritten

為云ORR1100Operand1ORoperand2

MOV1101Operand2(operand1IsIgnored)

B,ICinoOperand1ANDNOToperand2(Bitclear)

MVN1111NOToperand2(operandlisignored)

表4—5:數(shù)據(jù)處理指令

算術(shù)運(yùn)算(SUB、RSB、ADD、ADC、SBC、RSC、CMN)將每個(gè)操

作數(shù)都看作是一個(gè)32位的整數(shù)(無符號或兩個(gè)獨(dú)立的符號,兩種情形時(shí)一

樣的)。如果S位被置位(同時(shí)Rd不是R15),則CPSR中的V標(biāo)志在結(jié)果

的bit31顯現(xiàn)溢出時(shí)被置位,如果操作數(shù)均為無符號數(shù)能夠不理會,但如果

操作數(shù)為兩個(gè)獨(dú)立的有符號數(shù)則會發(fā)出錯(cuò)誤提示,C標(biāo)志會由于執(zhí)行ALU

的bit31被置位,Z標(biāo)志當(dāng)且僅當(dāng)結(jié)果全零時(shí)被置位,N標(biāo)志被置為結(jié)果bi

t31的值(如果認(rèn)為操作數(shù)為兩個(gè)獨(dú)立的有符號數(shù)時(shí)指示結(jié)果為負(fù))。

★移位:

當(dāng)?shù)诙€(gè)操作數(shù)被指定為移位寄存器時(shí),寄存器的移位操作受指令中

的移位域操縱。該域指示要執(zhí)行的移位類型(邏輯左移或右移、算術(shù)右移

或循環(huán)右移)。寄存器要移動(dòng)的值可包含在指令的趕忙域中,或者在另一個(gè)

寄存器(除了R15)。不同移位類型的編碼如圖4-4所示。

1176541187654

_____Ih|RS|o|I□

[6:5]Shifttype[6:5]Shifttype

00=logicalleft01=logicalright00=logicalleft01=logicalright

10=arithmeticright11=rotateright10=arithmeticright11=rotateright

[11:7]Shiftamount[11:8]Shiftregister

5bitunsignedintegerShiftamountspecifiedinbottom-byteofRs

圖4-4:ARM移位操作

★指定偏移量指令:

當(dāng)指令中指定了偏移量時(shí),它包含了一個(gè)5位的區(qū)域,其賦值范疇為0

~31

的《

果耳

變2

如]

圖4—6:邏輯右移

右爰

換后

而為

-7

圖4—7:算術(shù)右移

圖4—9:帶擴(kuò)展循環(huán)右移

★指定偏移量寄存器

只有Rs的最低端字節(jié)被用來確定偏移量。Rs能夠是除R15外的任何

寄存器。

如果該字節(jié)為零,Rm未改變的內(nèi)容將被當(dāng)作第二操作數(shù),同時(shí)舊的C

PSR的C標(biāo)志值將會被作為shifter的進(jìn)位輸出。

如果1到31位之間字節(jié)有值,移位結(jié)果將與指定移位指令的同一個(gè)值

和移位操作匹配。

如果字節(jié)中的值大于等于32,結(jié)果為上面所述移位的邏輯擴(kuò)展:

LSL32結(jié)果為零,進(jìn)位輸出等于Rm的。位;

LSL大于32結(jié)果為零,進(jìn)位為零;

LSR32結(jié)果為零,進(jìn)位輸出等于Rm的31位;

LSR大于32結(jié)果為零,進(jìn)位為零;

ASR大于等于32結(jié)果和進(jìn)位等于Rm的31位;

ROR32結(jié)果等于Rm,進(jìn)位等于Rm的31位;

RORn結(jié)果和進(jìn)位與RORn-32相同,那個(gè)地點(diǎn)n大于32;因此持續(xù)

從n中減去32,直到n值在1?31之間,見前面。

注意:

必須使帶有操縱移位寄存器指令的bit7為零,該位為1會引起指令為

乘或未定義。

★趕忙數(shù)循環(huán):

趕忙數(shù)循環(huán)域是一個(gè)4位無符號整數(shù),指定對8位趕忙數(shù)進(jìn)行移位操

作。該值為擴(kuò)展到32位的零,然后通過在循環(huán)域中的兩倍值服從右移。這

能夠產(chǎn)生許多常數(shù),例如2的福。

★寫入R15

當(dāng)Rd為除R15外的寄存器時(shí),CPSR中的條件碼標(biāo)志能夠從前面所述

的ALU標(biāo)志更新。

當(dāng)Rd為R15同時(shí)指令中的S標(biāo)志未置位時(shí),操作結(jié)果被放入R15且C

PSR不受阻礙。

當(dāng)Rd為R15且S標(biāo)志置位時(shí),操作結(jié)果被放入R15,對應(yīng)于當(dāng)前模式

的SPSR被移入CPSR。這承諾自動(dòng)儲備PC和CPSR的狀態(tài)改變。這種指

令格式在用戶模式下不能使用。

★用R15作操作數(shù)

如果R15(PC)被用于數(shù)據(jù)處理指令中的一個(gè)操作數(shù),可直截了當(dāng)使

用該寄存器。

PC值確實(shí)是指令地址、加上由于指令預(yù)取的8或12個(gè)字節(jié)。如果指

令中指定了移位量,PC為前8個(gè)字節(jié)。如果用寄存器指定移位量,貝UPC

為前12個(gè)字節(jié)。

★TEQ、TST、CMP和CMN操作碼:

注意:

TEQ、TST、CMP和CMN不寫結(jié)果操作結(jié)果但置位CPSR中的標(biāo)志位。

即使助記符中沒有指定,匯編程序也應(yīng)當(dāng)總將這些指令的S標(biāo)志置位。

不能使用TEQP指令,它是早期ARM處理器使用的TEQ指令:代替

PSR轉(zhuǎn)移操作。

在ARM920T中TEQP的功能是:如果處理器工作在特許模式就將SP

SR_<mode>移入CPSR,如果在用戶模式什么也不做。

指令周期:數(shù)據(jù)處理指令增加的周期數(shù)如下表4-6:

ProcessingTypeCycles

Normaldataprocessing1S

Dataprocessingwithregisterspecifiedshift1S+11

DataprocessingwithPCwritten2S+1N

DataprocessingwithregisterspecifiedshiftandPCwritten2S+1N+11

表4-6:增加的循環(huán)時(shí)刻

注:S、N和I分別定義為順序(S-周期)、非順序(N-周期)和內(nèi)部(I

-周期)。

匯編程序句法

MOV,MVN(單操作數(shù)指令).

<opcode>{cond}{S}Rd,<Op2>

CMP,CMN,TEQ,TST(無結(jié)果指令).

<opcode>{cond}Rn,<Op2>

AND,EOR,SUB,RSB,ADD,ADC,SBC,RSC,ORR,BIC

<opcode>{cond}{S}Rd,Rn,<Op2>

那個(gè)地點(diǎn):

<Op2>Rm{,<shift>}或,<#expression〉

{cond}雙字母條件助記符,見表4—4

{S}如果S表示(指CMP,CMN,TEQ,TST),置位

條件碼.

Rd,Rn和Rm寄存器號表達(dá)式

<#expression>如果使用,匯編程序?qū)a(chǎn)生一個(gè)移位的趕忙8位域

來匹配表達(dá)式,如果不用會出錯(cuò)

<shift><Shiftname><register>或<shiftname>#expression,或RR

X(帶擴(kuò)展右移1位).

<shiftname>sASL,LSL,LSR,ASR,ROR.(ASL與LSL意義相同,

它們的匯編碼一樣)

例:

ADDEQR2,R4,R5;如果Z標(biāo)志置位,使R2=R4+R5

TEQSR4,#3;測試區(qū)4等于3(S是余外的,由匯編程序

自動(dòng)插入)

SUBR4,R5,R7,LSRR2;通過R2底部字節(jié)數(shù)邏輯右移R7,從R

5中減去結(jié)果,并

;將答案放入R4

MOVPCR14:從孑程序扳同

MRS(transferPSRcontentstoaregister)

312827232221161512110

CP5Cond00010Ps001111Rd000000000000

[15:12]DestinationRegister

[22]SourcePSR

0=CPSR1=SPSR_<currentmode>

數(shù)擊[31:28]ConditionField

標(biāo)只

MSR(transferregistercontentstoPSR)

3128272322211211430

Cond00010I>d10100111100000000Rm

或S

[3:0]SourceRegister

容無

[22]DestinationPSR

0=CPSR1=SPSR_<currentmode>

[31:28]ConditionField

moc

形]MSR(transferregistercontentsorimmediatevaluetoPSRflagbitsonly)

31282726252423222112110

態(tài)考Cond0010>d101001111Sourceoperand

[22]DestinationPSR

0=CPSR1=SPSR_<currentmode>

能電[25]ImmediateOperand

0=Sourceoperandisaregister

1=SPSR_<currentmode>

理者[11:0]SourceOperand

11430

I00000000Rm

[3:0]SourceRegister

IQ,[11:4]Sourceoperandisanimmediatevalue

11870

RotateImm

[7:0]Unsigned8bitimmediatevalue

[11:8]ShiftappliedtoImm

使用

[31:28]ConditionField

圖4—10:MRS、MSR指令格式

保留位:

ARM920T中只定義了PSR的12個(gè)位(N、Z、C、V、I、F、T和M[4:

0]),其余位保留為今后的處理器使用。

為確保ARM920T和今后處理器之間的最大兼容性,應(yīng)當(dāng)遵守下列原

則:

當(dāng)改變PSR

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論