嵌入式系統(tǒng)匯編指令_第1頁
嵌入式系統(tǒng)匯編指令_第2頁
嵌入式系統(tǒng)匯編指令_第3頁
嵌入式系統(tǒng)匯編指令_第4頁
嵌入式系統(tǒng)匯編指令_第5頁
已閱讀5頁,還剩41頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

第二章指令系統(tǒng)-ARM&SHARC2.1體系結(jié)構(gòu)分類馮?諾伊曼結(jié)構(gòu)

?

哈佛結(jié)構(gòu)存儲(chǔ)器CPU程序存儲(chǔ)器CPU數(shù)據(jù)存儲(chǔ)器體系結(jié)構(gòu)分類精簡指令系統(tǒng)(RISC)復(fù)雜指令系統(tǒng)(CISC)2.2

ARM處理器體系結(jié)構(gòu):版本1~版本6變種:Thumb指令集(T);長乘法指令(M);增強(qiáng)DSP指令(E);Java加速器(J);多媒

體擴(kuò)展(SIMD)2.2.1

ARM處理器系列-ARM7ARM7DMI內(nèi)核32位RISC,最高主頻130M,支持Thumb指令集包括:ARM7TDMI,ARM7TDMI-S,ARM7EJ-S,ARM720T4特點(diǎn):低功耗;代碼密度高;眾多操作系統(tǒng)支持;代碼兼容ARM9,ARM9E,ARM10E處理器;ARM處理器系列-ARM9ARM9TDMI內(nèi)核包括ARM920T、ARM922T、ARM940T支持32位ARM與16位Thumb指令集五級(jí)整數(shù)流水線32位AMBA總線接口含MMU及MPU統(tǒng)一的數(shù)據(jù)與指令cacheARM處理器系列-ARM9E包括ARM926EJ-S、ARM946E-S、ARM966E-S三種類型包含DSP指令集可選的VFP9浮點(diǎn)協(xié)處理器ARM處理器系列-ARM10EARM1020E,ARM1022E,ARM1026EJ-S六級(jí)流水線400M主頻VFP10浮點(diǎn)協(xié)處理器SecurCore系列支持ARM及Thumb指令集包括SecurCore

SC100,SecurCore

SC110,SecurCore

SC200及SecurCore

SC2104軟內(nèi)核技術(shù),提供靈活性提供安全特性,抵制攻擊提供面向智能卡的存儲(chǔ)保護(hù)單元MPU其它Intel

Xscale系列Intel

StrongARM系列2.2.2ARM寄存器組31個(gè)32位通用寄存器R0~R7:無備份寄存器:8R8~R12:備份寄存器(快速中斷FIQ):10R13:棧指針:6R14:連接寄存器:6R15:PC:1ARM寄存器組CPSR(程序狀態(tài)寄存器)條件標(biāo)志位:NZCVQ:DSP是否溢出控制位I:IRQ中斷禁止位控制位F:FIQ中斷禁止位控制位T:指示是ARM還是Thumb指令M[4:0]:指示處理器模式N

|

Z

|

C

|

V

|

Q

|

DNM(RAZ)

|

I

|

F

|

T

|

M4

|

M3

|

M2

|

M1

|

M02.2.3

ARM指令分類數(shù)據(jù)處理指令Load/Store指令跳轉(zhuǎn)指令程序狀態(tài)寄存器傳輸指令協(xié)處理器指令異常中斷產(chǎn)生指令指令格式cond

|

00

|

X

|

opcode

|

S

|

Rn

|

Rd

|

格式由X位決定31

27

25

24

20

19

15

11

0X=1立即數(shù)方式#rot

|

8位立即數(shù)11

7

0X=0#shift |

Sh

|

0

|

Rm11

6

4

3

0Rs |

0

|

Sh

|

1

|

Rm11

7

6

4

3

0指令語法<opcode>

{<cond>}{S}

<Rd>,<Rn>,<shifter_operand>MOVADDADDLDRLDRR3,R2R3,R1,R2R0,R1,#2R0,[R1,-R2]R0,[R1,#4]2.2.3.1數(shù)據(jù)處理指令數(shù)據(jù)傳送指令MOV

R0,R1MVN

R0,[R1]算術(shù)運(yùn)算指令A(yù)DDSUBANDR0,R1,R1,LSL

#1

;R0=R1+R1*2R0,R0,#1

;R0=R0-1R0,R1,#15比較指令CMPTSTR1,#256R1,#2552.2.3.2

Load/Store指令32位字指令LDRLDRSTRR0,[R1,#4]R0,[R1,R2]R0,[R1,#100]8位字節(jié)指令LDRBLDRBTSTRBR0,[R1]R0,[R1,R2,LSL

#2]R0,[R1]半字指令LDRHLDRSHR0,[R1]R0,[R1],#2偽指令–

ADRR1,X2.2.3.3

跳轉(zhuǎn)指令跳轉(zhuǎn)指令范圍32MB;PC+400B

LabelB

#100BL

Func示例1X=(a+b)-CADR

r4,aLDR

r0,[r4]ADR

r4,bLDR

r1,[r4]ADD

r3,r0,r1ADR

r4,cLDR

r2,[r4]SUB

r3,r3,r2ADR

r4,xSTR

r3,[r4]示例2Z=(a

<<2)|(b&15)ADRLDRMOVADRLDRANDORRADRSTRr4,ar0,[r4]r0,r0,LSL

#2r4,br1,[r4]r1,r1,#15r1,r0,r1r4,zr1,[r4]if

(a

<

b){X

=

5;Y

=

c

+

d;}else x=c

d;ADRLDRADRLDRCMPBGEMOVADRSTRADRLDRADRr4,ar0,[r4]r4,br1,[r4]r0,r1fblockr0,#5r4,xr0,[r4]r4,cr0,[r4]r4,d示例3–LDRr1,[r4]–ADDr0,r0,r1–ADRr4,y–STRr0,[r4]–BafterFblockADRr4,cLDRr0,[r4]ADRr4,dLDRr1,[r4]SUBr0,r0,r1ADRr4,xSTRr0,[r4]after示例3‘–

ADRr4,a–

ADRGEr4,c–

LDRr0,[r4]–

LDRGEr0,[r4]–

ADRr4,b–

ADRGEr4,d–

LDRr1,[r4]–

LDRGEr1,[r4]–

CMPr0,r1–

SUBGEr0,r0,r1–

MOVLTr0,#5–

ADRGEr4,x–

ADRLTr4,x–

STRGEr0,[r4]–

STRLTr0,[r4]–

ADRLTr4,c–

LDRLTr0,[r4]–

ADDLTr0,r0,r1–

ADRLTr4,y–

STRLTr0,[r4]示例4Switch

(test){–ADRr2,testCase

0:…break;–LDRr0,[r2]Case

1:…break;–ADRr1,switchtab…–LDRr15,[r1,r0,LSL

#2]}–

Switchtab

DCDcase0DCDcase1…–

Case0

…;code–

Case1

…;codeFIR濾波器For

(I=0,f=0;

I<N;

I++)–

F

=

f

+

c[I]*x[I]I=0;F=0;While(I<N){–

F=f+c[I]*x[I];I++;}示例5–MOVr0,#0–MOVr8,#0–ADRr2,N–LDRr1,[r2]–MOVr2,#0–ADRr3,c–ADRr5,xLoopLDRr4,[r3,r8]LDRr6,[r5,r8]MULr4,r4,r6ADDr2,r2,r4ADDr8,r8,#4ADDr0,r0,#1CMPr0,r1BLTloop函數(shù)調(diào)用X

=

a

+

bFoo(x)Y

=

c

dBL

FooMOV

LR,PC;由BL自動(dòng)執(zhí)行MOV

PC,LR;過程返回Void

f1(int

a){–

F2(a);}F1

LDRr0,[r13];棧頂取參數(shù)STRr14,[r13,#4]!STRr0,[r13,#4]!BLf2SUBr13,#4LDRr15,[r13],#-42.3

SHARC處理器ADSP-21XX:16位定點(diǎn)DSPADSP-2106X:32位浮點(diǎn)DSPSHARC:超級(jí)哈佛結(jié)構(gòu)計(jì)算機(jī)32位數(shù)據(jù)與地址片上存儲(chǔ)器,分PM與DMSHARC處理器概述計(jì)算單元:ALU,MAC,Shifter(定點(diǎn)、浮點(diǎn))指令長48位,基本數(shù)據(jù)32位,地址32位支持?jǐn)?shù)據(jù)類型:32位單精度浮點(diǎn),40位擴(kuò)展精度浮點(diǎn),32位整數(shù)2.3.1

寄存器組定點(diǎn)數(shù)寄存器R0~R15浮點(diǎn)數(shù)寄存器F0~F15算術(shù)狀態(tài)寄存器(ASTAT)粘著寄存器(STKY)模式1寄存器(MODE1)地址數(shù)據(jù)生成寄存器組DAGASTAT的ALU狀態(tài)標(biāo)志位名稱定義0AZ結(jié)果為0或下溢1AV結(jié)果溢出2AN結(jié)果為負(fù)3AC定點(diǎn)進(jìn)位4ASX輸入量的符號(hào)(ABS,MANT指令)5AI浮點(diǎn)無效10AF最近一次操作是浮點(diǎn)24~31CACC比較累計(jì)寄存器(最近8次結(jié)果)ASTAT的乘法器狀態(tài)標(biāo)志位名稱定義6MN結(jié)果為負(fù)7MV溢出8MU浮點(diǎn)向下溢出9MI浮點(diǎn)無效操作STKY的ALU狀態(tài)標(biāo)志位名稱定義0AUS浮點(diǎn)下溢1AVS浮點(diǎn)溢出2AOS定點(diǎn)溢出5AIS浮點(diǎn)無效操作STKY的乘法器狀態(tài)標(biāo)志位名稱定義6MOS定點(diǎn)乘法溢出7MVS操作溢出8MUS浮點(diǎn)向下溢出9MIS浮點(diǎn)無效操作MODE1控制位位名稱定義13ALUSATALU飽和使能,1=使能,0=禁止15TRUNC舍入方式控制,1=截尾,0=靠近實(shí)際值16RND32浮點(diǎn)數(shù)截取界限控制,1=截取到32位,0=截取到40位DAGI0I1I2I3M0M1M2M3L0L1L2L3B0B1B2B3I4I5I6I7M4M5M6M7L4L5L6L7B4B5B6B7I8I9I10I11M8M9M10M11L8L9L10L11B8B9B10B11I12I13I14I15M12M13M14M15L12L13L14L15B12B13B14B15DAG1DAG2DAGDAG1:32位數(shù)據(jù)地址

(DMA總線)DAG2:24位程序地址

(PMA總線)I:索引,存儲(chǔ)器指針M:修正,移動(dòng)指針修改值B:基址,循環(huán)緩沖基址L:長度,循環(huán)緩沖區(qū)長度每個(gè)DAG寄存器都有備份寄存器事先修改、事后修改PM(Mx,Ix),DM(Mx,Ix)不修改IxPM(Ix,Mx),DM(Ix,Mx)修改IxR1=DM(0x400,I1)PM(I8,0x0B)=ASTATDAG循環(huán)尋址:必須用事后修改–

F1=DM(I0,M0)初始化非零L寄存器初始化基址B寄存器初始化基址同時(shí)置入I位反序?qū)ぶ稤AG1中的I0按位反序輸出成為地址DAG2中的I8按位反序輸出成為地址I0=0x80400000;R1=DM(I0,3);(DM地址=0x201,I0=0x8040003)尋址操作示例絕對(duì)地址:–

R0=DM(0x2000000);–

R0=DM(_a);–

DM(_a)=R0;后修改模式地址:–

R0=DM(I3,M1);–

DM(I2,1)=R1;基址加偏移量:–

R0=DM(M1,I0);程序存儲(chǔ)器存儲(chǔ)數(shù)據(jù)Float

dm

a[N];2.3.2

指令集定點(diǎn)ALU操作浮點(diǎn)ALU操作移位操作分支條件操作2.3.2.1

定點(diǎn)算術(shù)操作Rn=Rx+RyRn=Rx-RyRn=Rx+Ry+CIRn=Rx-Ry+CI-1Rn=(Rx+Ry)/2COMP(Rx,Ry)Rn=Rx+CIRn=Rx+CI-1Rn=Rx+1Rn=Rx-1Rn=-RxRn=ABS

RxRn=PASS

RxRn=Rx

AND

RyRn=Rx

OR

RyRn=Rx

XOR

RyRn=NOT

RxRn=MIN(Rx,Ry)Rn=MAX(Rx,Ry)Rn=CLIP

Rx

by

Ry2.3.2.2浮點(diǎn)算術(shù)操作Fn=Fx+FyFn=Fx-FyFn=ABS(Fx+Fy)Fn=ABS(Fx-Fy)Fn=(Fx+Fy)/2COMP(Fx,Fy)Fn=-FxFn=ABS

FxFn=PASS

FxFn=RND

FxFn=SCALB

Fx

by

RyFn=MANT

FxFn=LOGB

FxFn=Fix

Fx,Rn=TRUNC

FxFn=Float

Rx

by

Fy,FLOATRxFn=RECIPT

RxFn=RSQRTS

FxFn=Fx

COPYSIGN

FyFn=MIN(Fx,Fy)Fn=MAX(Fx,Fy)Fn=CLIP

Fx

by

Fy示例1X=(a+b)-cR0=DM(_a);R1=DM(_b);R3=R0+R1;R2=DM(_c);R3=R3-R2;DM(_x)=R3;Y=a*(b+c)R1=DM(_b);R2=DM(_c);R2=R1+R2;R0=DM(_a);R2=R2*R0;DM(_y)=R2;R2=DM(I1,M5),R1=PM(I8,M13);R0=R2+R1,R12=DM(I0,M5);R6=R12*R0;DM(I0,M5)=R6;2.3.2.3移位操作Rn=LSHIFT

Rx

by

RyRn=Rn

OR

LSHIFT

Rx

by

RyRn=ASHIFT

Rx

by

RyRn=Rn

OR

ASHIFT

Rx

by

RyRn=ROT

Rx

by

RyRn=BCLR

Rx

by

RyRn=BSET

Rx

by

RyRn=BTGL

Rx

by

RyBTST

Rx

by

RyRn=FDEP

Rx

by

RyRn=Rn

O

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論