DSP指令大全最全.docx

上传人:b****5 文档编号:6400650 上传时间:2023-01-06 格式:DOCX 页数:31 大小:25.45KB
下载 相关 举报
DSP指令大全最全.docx_第1页
第1页 / 共31页
DSP指令大全最全.docx_第2页
第2页 / 共31页
DSP指令大全最全.docx_第3页
第3页 / 共31页
DSP指令大全最全.docx_第4页
第4页 / 共31页
DSP指令大全最全.docx_第5页
第5页 / 共31页
点击查看更多>>
下载资源
资源描述

DSP指令大全最全.docx

《DSP指令大全最全.docx》由会员分享,可在线阅读,更多相关《DSP指令大全最全.docx(31页珍藏版)》请在冰豆网上搜索。

DSP指令大全最全.docx

DSP指令大全最全

附录6TMS320C54x指令系统一览表(按指令功能排列)

一、算术运算指令

1.加法指令

句法

表达式

说明

字数

周期

ADDSmem,src

src=src+Smem

操作数加至累加器

1

1

ADDSmem,TS,src

src=src+Smem<

操作数移位后加至累加器

1

1

ADDSmem,16,src[,dst]

dst=src+Smem<<16

操作数左移16位加至累加器

1

1

ADDSmem[,SHIFT],src[,dst]

dst=src+Smem<

操作数移位后加到累加器

2

2

ADDXmem,SHFT,src

src=src+Xmem<

操作数移位后加到累加器

1

1

ADDXmem,Ymem,dst

dst=Xmem<<16+Ymem<<16

两个操作数分别左移16位后加到累加器

1

1

ADD#lk[,SHFT],src[,dst]

dst=src+#lk<

长立即数移位后加到累加器

2

2

ADD#lk,16,src[,dst]

dst=src+#lk<<16

长立即数左移16位后加到累加器

2

2

ADDsrc,[,SHIFT][,dst]

dst=dst+src<

累加器移位后相加

1

1

ADDsrc,ASM[,dst]

dst=dst+src<

累加器按ASM移位后相加

1

1

ADDCSmem,src

src=src+Smem+C

操作数带进位加至累加器

1

1

ADDM#lk,Smem

Smem=Smem+#lk

长立即数加至存储器

2

2

ADDSSmem,src

src=src+uns(Smem)

符号位不扩展的加法

1

1

2.减法指令

句法

表达式

说明

字数

周期

SUBSmem,src

src=src—Smem

从累加器中减去操作数

1

1

SUBSmem,TS,src

src=src—Smem<

从累加器中减去移位后的操作数

1

1

SUBSmem,16,src[,dst]

dst=src—Smem<<16

从累加器中减去左移16位后的操作数

1

1

SUBSmem[,SHIFT],src[,dst]

dst=src—Smem<

操作数移位后与累加器相减

2

2

SUBXmem,SHFT,src

src=src—Xmem<

操作数移位后与累加器相减

1

1

SUBXmem,Ymem,dst

dst=Xmem<<16—Ymem<<16

两个操作数分别左移16位后相减

1

1

SUB#lk[,SHFT],src[,dst]

dst=src—#1k<

长立即数移位后与累加器相减

2

2

SUB#lk,16,src[,dst]

dst=src—#1k<<16

长立即数左移16位后与累加器相减

2

2

SUBsrc[,SHIFT][,dst]

dst=dst—src<

源累加器移位后与目的累加器相减

1

1

SUBsrc,ASM[,dst]

dst=dst—src<

源累加器按ASM移位后与目的累加器相减

l

l

SUBBSmem,src

src=src—Smem——C

从累加器中带借位减操作数

1

1

SUBCSmem,src

If(src—Smem<<15)≥0

src=(src—Smem<<15)<<1+1

Else

src=src<

有条件减法

1

1

SUBSSmem,src

src=src—uns(Smem)

符号位不扩展的减法

1

1

3.乘法指令

句法

表达式

说明

字数

周期

MPYSmem,dst

dst=T*Smem

T寄存器值与操作数相乘

1

1

MPYRSmem,dst

dst=rnd(T*Smem)

T寄存器值与操作数相乘(带舍入)

1

1

MPYXmem,Ymem,dst

dst=Xmem*Ymem,T=Xmem

两个操作数相乘

1

1

MPYSmem,#lk,dst

dst=Smem*#lk,T=Smem

长立即数与操作数相乘

2

2

MPY#lk,dst

dst=T*#lk

长立即数与T寄存器值相乘

2

2

MPYAdst

dst=T*A(32-16)

T寄存值与累加器A高位相乘

1

1

MPYASmem

B=Smem*A(32-16),T=Smem

操作数与累加器A高位相乘

1

1

MPYUSmem,dst

dst=uns(T)*uns(Smem)

无符号数乘法

1

1

SQURSmem,dst

dst=Smem*Smem,T=Smem

操作数的平方

1

1

SQURA,dst

dst=A(32—16)*A(32—16)

累加器A的高位平方

1

1

4.乘法累加/减指令

句法

表达式

说明

字数

周期

MACSmem,src

src=src+T*Smem

操作数与T寄存器值相乘后加到累加器

1

1

MACXmem,Ymem,src[,dst]

dst=src+Xmern*Ymem,T=Xmem

两个操作数相乘后加到累加器

1

1

MAC#lk,src[,dst]

dst=src+T*#lk

长立即数与T寄存器值相乘后加到累加器

2

2

MACSmem,#lk,src[,dst]

dst=src+Smem*#lk,T=Smem

长立即数与操作数相乘后加到累加器

2

2

MACRSmem,src

dst=rnd(src+T*Smem)

操作数与T寄存器值相乘后加到累加器(带舍入)

1

1

MACRXmem,Ymem,src[,dst]

dst=rnd(src+Xmem*Ymem),T=Xmem

两个操作数相乘后加到累加器(带舍入)

1

1

MACASmem[,B]

B=B+Smem*A(32—16),T=Smem

操作数与累加器A高位相乘后加到累加器B

1

1

MACAT,src[,dst]

dst=src+T*A(32—16)

T寄存器值与累加器A高位相乘

1

1

MACARSmem[,B]

B=rnd(B+Smem*A(32—16)),T=Smem

T寄存器值与累加器A高位相乘后加到累加B(带舍入)

1

1

MACART,src[,dst]

dst=rnd(src+T*A(32—16))

累加器A高位与T寄存器值相乘后与源、累加器相加(带舍入)

1

1

MACDSmem,pmad,src

src=src+Smem*pmad,

T=Smem,(Smem+1)=Smem

操作数与程序存储器值相乘后累加并延迟

2

3

MACPSmem,pmad,src

src=src+Smem*pmad,T=Smem

操作数与程序存储器值相乘后加到累加器

2

3

MACSUXmem,Ymem,src

src=src+uns(Xmem)*Ymem,T=Xmem

元符号数与有符号数相乘后加到累加器

1

1

MASSmem,src

src=src—T*Smem

从累加器中减去T寄存器值与操作数的乘积

1

1

MASRXmem,Ymem,src[,dst]

dst=rnd(src—Xmem*Ymem),T=Xmem

从累加器中减去两操作数的乘积(带舍入)

1

1

MASXmem,Ymem,src[,dst]

dst=src—Xmem*Ymem,T=Xmem

从源累加器中减去两操作数的乘积

1

1

MASRSmem,src

src=rnd(src—T*Smem)

从累加器中减去T寄存器值与操作数的乘积(带舍入)

1

1

MASASmem[,B]

B=B—Smem*A(32—16),T=Smem

从累加器B中减去操作数与累加器A高位的乘积

1

1

MASAT,src[,dst]

dst=src—T*A(32—16)

从源累加器中减去T寄存器值与累加器A高位的乘积

1

1

MASART,src[,dst]

dst=rnd(src—T*A(32—16))

从源累加器中减去T寄存器值与累加器A高位的乘积(带舍入)

1

1

SQURASmem,src

src=src+Smem*Smem,T=Smem

操作数平方并累加

1

1

SQURSSmem,src

src=src—Smem*Smem,T=Smem

从累加器中减去操作数的平方

1

1

5.双精度(32位操作数)指令

句法

表达式

说明

字数

周期

DADDLmem,src[,dst]

IfC16=0

dst=Lmem+src

IfC16=1

dst(39—16)=Lmem(31—16)+src(31—16)

dst(15—0)=Lmem(15—0)+src(15—0)

双精度/双16位数加到累加器

1

1

DADSTLmem,dst

IfC16=0

dst=Lmem+(T<<16+T)

IfC16=1

dst(39—16)=Lmem(31—16)+T

dst(15—0)=Lmem(15—0)—T

双精度/双16位数与T寄存器值相加/减

1

1

DRSUBLmem,src

IfC16=0

src=Lmem—src

IfC16=1

src(39—16)=Lmem(31—16)—src(31—16)

src(15—0)=Lmem(15—0)—src(15—0)

双精度/双16位数中减去累加器值

1

1

DSADTLmem,dst

IfC16=0

dst=Lmem—(T<<16+T)

IfC16=1

dst(39—16)=Lmem(31—16)—T

dst(15—0)=Lmem(15—0)+T

长操作数与T寄存器值相加/减

1

1

DSUBLmem,src

IfC16=0

src=src—Lmem

IfC16=1

src(39—16)=src(31—16)—Lmem(31—16)

src(15—0)=src(15—0)—Lmem(15—0)

从累加器中减去双精度/双16位数

1

1

DSUBTLmem,dst

IfC16=0

dst=Lmem—(T<<16+T)

IfC16=1

dst(39—16)=Lmem(31—16)—T

dst(15—0)=Lmem(15—0)—T

从长操作数中减去T寄存器值

1

1

6.专用指令

句法

表达式

说明

字数

周期

ABDSTXmem,Ymem

B=B+|A(32—16)|,A=(Xmem—Ymem)<<16

绝对距离

1

1

ABSsrc[,dst]

dst=|src|

累加器取绝对值

1

1

CMPLsrc[,dst]

dst=———src

累加器取反

1

1

DELAYSmem

(Smem+1)=Smem

存储器单元延迟

1

1

EXPsrc

T=numberofsignbits(src)—8

求累加器的指数

1

1

FIRSXmem,Ymem,pmad

B=B+A*pmad,A=(Xmem+Ymem)<<16

对称FIR滤波

2

3

LMSXmem,Ymem

B=B+Xmem*Ymem,A=(A+Xmem<<16)+215

求最小均方值

1

1

MAXdst

dst=max(A,B)

求累加器(A,B)最大值

1

1

MINdst

dst=min(A,B)

求累加器(A,B)最小值

1

1

NEGsrc[,dst]

dst=-src

累加器变负

1

1

NORMsrc[,dst]

dst=src<

归一化

1

1

POLYSmem

B=Smem<<16,A=rnd(A*T+B)

求多项式的值

1

1

RNDsrc[,dst]

dst=src+215

累加器舍入运算

1

1

SATsrc

saturate(src)

累加器饱和运算

1

1

SQDSTXmem,Ymem

B=B+A(32—16)*A(32—16),A=(Xmem—Ymem)<<16

求距离的平方

1

1

二、逻辑运算指令

1.与逻辑运算指令

句法

表达式

说明

字数

周期

ANDSmem,src

src=src&Smem

操作数和累加器相与

1

1

AND#lk[,SHFT],src[,dst]

dst=src&#lk<

长立即数移位后和累加器相与

2

2

AND#lk,16,src[,dst]

dst=src&#lk<<16

长立即数左移16位后和累加器相与

2

2

ANDsrc[,SHIFT][,dst]

dst=dst&src<

源累加器移位后和目的累加器相与

1

1

ANDM#lk,Smem

Smem=Smem&#lk

操作数和长立即数相与

2

2

2.或逻辑运算指令

句法

表达式

说明

字数

周期

ORSmem

src=src|Smem

操作数和累加器相或

l

1

OR#lk[,SHFT],src[,dst]

dst=src|#lk<

长立即数移位后和累加器相或

2

2

OR#lk,16,src[,dst]

dst=src|#lk<<16

长立即数左移16位后和累加器相或

2

2

ORsrc[,SHIFT][,dst]

dst=dst|src<

源累加器移位后和目的累加器相或

1

1

ORM#lk,Smem

Smem=Smem|#lk

操作数和长立即数相或

2

2

3.异或逻辑运算指令

句法

表达式

说明

字数

周期

XORSmem,src

src=src∧Smem

操作数和累加器相异或

1

1

XOR#lk,[,SHFT],src[,dst]

dst=src∧#lk<

长立即数移位后和累加器相异或

2

2

XOR#lk,16,src[,dst]

dst=src∧#lk<<16

长立即数左移16位后和累加器相异或

2

2

XORsrc[,SHIFT][,dst]

dst=dst∧src<

源累加器移位后和目的累加器相异或

1

1

XORM#lk,Smem

Smem=Smem∧#lk

操作数和长立即数相异或

2

2

4.移位指令

句法

表达式

说明

字数

周期

ROLsrc

Rotateleftwithcarryin

累加器经进位位循环左移

1

1

ROLTCsrc

RotateleftwithTCin

累加器经TC位循环左移

1

1

RORsrc

Rotaterightwithcarryin

累加器经进位位循环右移

1

1

SFTAsrc,SHIFT[,dst]

dst=src<

累加器算术移位

1

1

SFTCsrc

ifsrc(31)=src(30)thensrc=src<<1

累加器条件移位

1

1

SFTLsrc,SHIFT[,dst]

dst=src<

累加器逻辑移位

1

1

5.测试指令

句法

表达式

说明

字数

周期

BITXmem,BITC

TC=Xmem(15—BITC)

测试指定位

1

l

BITFSmem,#lk

TC=(Smem&#lk)

测试由立即数规定的位域

2

2

BITTSmem

TC=Smem(15—T(3—O))

测试由T寄存器指定的位

1

1

CMPMSmem,#lk

TC=(Smem==#lk)

存储单元与长立即数比较

2

2

CMPRCC,ARx

CompareARxwithAR0

辅助寄存器ARx与ARO比较

1

1

三、程序控制指令

1.分支转换指令

句法

表达式

说明

字数

周期

B[D]pmad

PC=pmad(15—0)

无条件分支转移

2

4/[2※]

BACC[D]src

PC=src(15—0)

按累加器规定的地址转移

1

6/[4※]

BANZ[D]pmad,Sind

if(Sind≠0)thenPC=pmad(15—0)

辅助寄存器不为O就转移

2

4?

/2§/[2※]

BC[D]pmad,cond[,cond[,cond]]

if(cond(s))thenPC=pmad(15—0)

条件分支转移

2

5?

/3§/[3※]

FB[D]extpmad

PC=pmad(15—0),XPC=pmad(22—16)

无条件远程分支转移

2

4/[2※]

FBACC[D]src

PC=src(15—0),XPC=src(22—16)

按累加器规定的地址远程分支转移

1

6/[4※]

2.调用指令

句法

表达式

说明

字数

周期

CALA[D]src

——SP=PC,PC=src(15—0)

按累加器规定的地址调用子程序

1

6/[4※]

CALL[D]pmad

——SP=PC,PC=pmad(15—0)

无条件调用子程序

2

4/[2§]

CC[D]pmad,cond[,cond[,cond]]

if(cond(s))then——SP=PC,PC=pmad(15—0)

有条件调用子程序

2

5?

/3§/[3※]

FCALA[D]src

——SP=PC,——SP=XPC,PC=src(15—0),XPC=src(22—16)

按累加器规定的地址远程调用子程序

1

6/[4※]

FCALL[D]extpmad

——SP=PC,——SP=XPC,PC=pmad(15—0),XPC=pmad(22—16)

无条件远程调用子程序

2

4[2※]

3.中断指令

句法

表达式

说明

字数

周期

INTRK

——SP=PC,PC=IPTR(15—7)+K<<2,INTM=1

不可屏蔽的软件中断,关闭其他可屏蔽中断

1

3

TRAPK

——SP=PC,PC=IPTR(15—7)+K<<2

不可屏蔽的软件中断,不影响INTM位

1

3

4.返回指令

句法

表达式

说明

字数

周期

FRET[D]

XPC=SP++,PC=SP++

远程返回

1

6/[4※]

FRETE[D]

XPC=SP++,PC=SP++,INTM=O

开中断,从远程中断返回

1

6/[4※]

RC[D]cond[,cond[,cond]]

if(cond(s))thenPC=SP++

条件返回

1

5?

3§/[3※]

RET[D]

PC=SP++

返回

1

5/[3※]

RETE[D]

PC=SP++,INTM=O

开中断,从中断返回

1

5/[3※]

RETF[D]

PC=RTN,SP++,INTM=O

开中断,从中断快速返回

1

3/[1※]

5.重复指令

句法

表达式

说明

字数

周期

RPTSmem

Repeatsingle,RC=Smem

重复执行下条指令(Smem)+1次

1

1

RPT#K

Repeatsingle,RC=#K

重复执行下条指令k十1次

1

1

RPT#lk

Repeatsingle,RC=#lk

重复执行下条指令#lk+1次

2

2

RPTB[D]pmad

Repeatblock,RSA=PC+2[4#],REA=pmad—1

块重复指令

2

4/[2※]

RPTZdst,#lk

Repeatsingle,RC=#lk,dst=O

重复执行下条指令,累加器清O

2

2

6.堆栈管理指令

句法

表达式

说明

字数

周期

FRAMEK

SP=SP+K,-128≤k≤127

堆栈指针偏移一个立即数值

1

1

POPDSmem

Smem=SP++

将数据从栈顶弹出至数据存储器

1

1

POPMMMR

MMR=SP++

将数据从栈顶弹出至MMR

1

1

PSHDSmem

——SP=Smem

将数据压人堆栈

1

1

PSHMMMR

——SP=MMR

将MMR压人堆栈

l

1

7.其他程序控制指令

句法

表达式

说明

字数

周期

IDLEK

idle(K),1≤k≤3

保持空转状态,直到中断发生

1

4

MARSmem

IfCMPT=0,thenmodifyARx,

ARPisunchanged

IfCMPT=1andARx≠AR0,thenmodifyARx,

ARP=x

IfCMPT=1andARx=AR0,thenmodifyAR(ARP),

ARPisunchanged

修改辅助寄存器

1

1

NOP

nooperation

空操作

1

1

RESET

softwarereset

软件复位

1

3

RSBXN,SBIT

STN(SBIT)=0

状态寄存器位复位

1

1

SSBXN,SBIT

STN(SBIT)=1

状态寄存器位置位

1

1

XCn,cond[,cond[,cond]]

If(cond(s))thenexecutethenextninstructions;n=1or2

有条件执行

1

1

注:

?

条件“真”,§条件“假”,※延迟指令。

四、加载和存储指令

1.加载指令

句法

表达式

说明

字数

周期

DLDLmem,dst

dst=Lmem

双精度/双16位长字加载累加器

1

1

LDSmem,dst

dst=Smem

将操作数加载到累加器

1

1

LDSmem,TS,dst

dst=Smem<

操作数按TREG(5

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 小升初

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1