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

原文:http://blog.163.com/byl545@126/blog/static/180522812008102171429535/

一、算术运算指令

1. 加法指令

 

句    法

 

表  达  式

 

说    明

 

字数

 

周期

 

ADD  Smem,src

 

src=src+Smem

 

操作数加至累加器

 

1

 

1

 

ADD  Smem,TS,src

 

src=src+Smem<<TS

 

操作数移位后加至累加器

 

1

 

1

 

ADD  Smem,16,src[,dst]

 

dst=src+Smem<<16

 

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

 

1

 

1

 

ADD  Smem[,SHIFT],src[,dst]

 

dst=src+Smem<<SHIFT

 

操作数移位后加到累加器

 

2

 

2

 

ADD  Xmem,SHFT,src

 

src=src+Xmem<<SHFT

 

操作数移位后加到累加器

 

1

 

1

 

ADD  Xmem,Ymem,dst

 

dst=Xmem<<16+Ymem<<16

 

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

 

1

 

1

 

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

 

dst=src+#lk<<SHFT

 

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

 

2

 

2

 

ADD  #lk,16,src[,dst]

 

dst=src+#lk<<16

 

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

 

2

 

2

 

ADD  src,[,SHIFT][,dst]

 

dst=dst+src<<SHIFT

 

累加器移位后相加

 

1

 

1

 

ADD  src,ASM[,dst]

 

dst=dst+src<<ASM

 

累加器按ASM移位后相加

 

1

 

1

 

ADDC  Smem,src

 

src=src+Smem+C

 

操作数带进位加至累加器

 

1

 

1

 

ADDM  #lk,Smem

 

Smem=Smem+#lk

 

长立即数加至存储器

 

2

 

2

 

ADDS  Smem,src

 

src=src+uns(Smem)

 

符号位不扩展的加法

 

1

 

1

 

 

2. 减法指令

 

句    法

 

表  达  式

 

说    明

 

字数

 

周期

 

SUB  Smem,src

 

src=src—Smem

 

从累加器中减去操作数

 

1

 

1

 

SUB  Smem,TS,src

 

src=src—Smem<<TS

 

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

 

1

 

1

 

SUB  Smem,16,src[,dst]

 

dst=src—Smem<<16

 

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

 

1

 

1

 

SUB  Smem[,SHIFT],src[,dst]

 

dst=src—Smem<<SHIFT

 

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

 

2

 

2

 

SUB  Xmem,SHFT,src

 

src=src—Xmem<<SHFT

 

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

 

1

 

1

 

SUB  Xmem,Ymem,dst

 

dst=Xmem<<16—Ymem<<16

 

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

 

1

 

1

 

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

 

dst=src—#1k<<SHFT

 

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

 

2

 

2

 

SUB  #lk,16,src[,dst]

 

dst=src—#1k<<16

 

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

 

2

 

2

 

SUB  src[,SHIFT][,dst]

 

dst=dst—src<<SHIFT

 

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

 

1

 

1

 

SUB  src,ASM[,dst]

 

dst=dst—src<<ASM

 

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

 

l

 

l

 

SUBB  Smem,src

 

src=src—Smem—C—

 

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

 

1

 

1

 

SUBC  Smem,src

 

If (src—Smem<<15)≥0

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

Else

src=src<<l

 

有条件减法

 

1

 

1

 

SUBS  Smem,src

 

src=src—uns(Smem)

 

符号位不扩展的减法

 

1

 

1

 

 

3. 乘法指令

 

句    法

 

表  达  式

 

说    明

 

字数

 

周期

 

MPY  Smem,dst

 

dst=T*Smem

 

T寄存器值与操作数相乘

 

1

 

1

 

MPYR  Smem,dst

 

dst=rnd(T*Smem)

 

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

 

1

 

1

 

MPY  Xmem,Ymem,dst

 

dst=Xmem*Ymem,T=Xmem

 

两个操作数相乘

 

1

 

1

 

MPY  Smem,#lk,dst

 

dst=Smem*#lk,T=Smem

 

长立即数与操作数相乘

 

2

 

2

 

MPY  #lk,dst

 

dst=T*#lk

 

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

 

2

 

2

 

MPYA  dst

 

dst=T*A(32-16)

 

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

 

1

 

1

 

MPYA  Smem

 

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

 

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

 

1

 

1

 

MPYU  Smem,dst

 

dst=uns(T)*uns(Smem)

 

无符号数乘法

 

1

 

1

 

SQUR  Smem,dst

 

dst=Smem*Smem,T=Smem

 

操作数的平方

 

1

 

1

 

SQUR  A,dst

 

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

 

累加器A的高位平方

 

1

 

1

 

 

4. 乘法累加/减指令

 

句    法

 

表  达  式

 

说    明

 

字数

 

周期

 

MAC  Smem,src

 

src=src+T*Smem

 

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

 

1

 

1

 

MAC  Xmem,Ymem,src[,dst]

 

dst=src+Xmern*Ymem,T=Xmem

 

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

 

1

 

1

 

MAC  #lk,src[,dst]

 

dst=src+T*#lk

 

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

 

2

 

2

 

MAC  Smem,#lk,src[,dst]

 

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

 

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

 

2

 

2

 

MACR  Smem,src

 

dst=rnd(src+T*Smem)

 

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

 

1

 

1

 

MACR  Xmem,Ymem,src[,dst]

 

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

 

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

 

1

 

1

 

MACA  Smem[,B]

 

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

 

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

 

1

 

1

 

MACA  T,src[,dst]

 

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

 

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

 

1

 

1

 

MACAR  Smem[,B]

 

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

 

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

 

1

 

1

 

MACAR  T,src[,dst]

 

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

 

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

 

1

 

1

 

MACD  Smem,pmad,src

 

src=src+Smem*pmad,

T=Smem,(Smem+1)=Smem

 

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

 

2

 

3

 

MACP  Smem,pmad,src

 

src=src+Smem*pmad,T=Smem

 

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

 

2

 

3

 

MACSU  Xmem,Ymem,src

 

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

 

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

 

1

 

1

 

MAS  Smem,src

 

src=src—T*Smem

 

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

 

1

 

1

 

MASR  Xmem,Ymem,src[,dst]

 

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

 

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

 

1

 

1

 

MAS  Xmem,Ymem,src[,dst]

 

dst=src—Xmem*Ymem,T=Xmem

 

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

 

1

 

1

 

MASR  Smem,src

 

src=rnd(src—T*Smem)

 

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

 

1

 

1

 

MASA  Smem[,B]

 

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

 

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

 

1

 

1

 

MASA  T,src[,dst]

 

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

 

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

 

1

 

1

 

MASAR  T,src[,dst]

 

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

 

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

 

1

 

1

 

SQURA  Smem,src

 

src=src+Smem*Smem,T=Smem

 

操作数平方并累加

 

1

 

1

 

SQURS  Smem,src

 

src=src—Smem*Smem,T=Smem

 

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

 

1

 

1

 

 

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

 

句    法

 

表  达  式

 

说    明

 

字数

 

周期

 

DADD  Lmem,src[,dst]

 

If  C16=0

dst=Lmem+src

If  C16=1

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

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

 

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

 

1

 

1

 

DADST  Lmem,dst

 

If  C16=0

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

If  C16=1

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

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

 

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

 

1

 

1

 

DRSUB  Lmem,src

 

If  C16=0

src=Lmem—src

If  C16=1

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

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

 

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

 

1

 

1

 

DSADT  Lmem,dst

 

If  C16=0

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

If  C16=1

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

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

 

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

 

1

 

1

 

DSUB  Lmem,src

 

If  C16=0

src=src—Lmem

If  C16=1

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

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

 

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

 

1

 

1

 

DSUBT  Lmem,dst

 

If  C16=0

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

If  C16=1

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

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

 

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

 

1

 

1

 

 

6. 专用指令

 

句    法

 

表  达  式

 

说    明

 

字数

 

周期

 

ABDST  Xmem,Ymem

 

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

 

绝对距离

 

1

 

1

 

ABS  src[,dst]

 

dst=|src|

 

累加器取绝对值

 

1

 

1

 

CMPL  src[,dst]

 

dst=src———

 

累加器取反

 

1

 

1

 

DELAY  Smem

 

(Smem+1)=Smem

 

存储器单元延迟

 

1

 

1

 

EXP  src

 

T=number of sign bits(src)—8

 

求累加器的指数

 

1

 

1

 

FIRS  Xmem,Ymem,pmad

 

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

 

对称FIR滤波

 

2

 

3

 

LMS  Xmem,Ymem

 

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

 

求最小均方值

 

1

 

1

 

MAX  dst

 

dst=max(A,B)

 

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

 

1

 

1

 

MIN  dst

 

dst=min(A,B)

 

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

 

1

 

1

 

NEG  src[,dst]

 

dst=-src

 

累加器变负

 

1

 

1

 

NORM  src[,dst]

 

dst=src<<TS,dst=norm(src,TS)

 

归一化

 

1

 

1

 

POLY  Smem

 

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

 

求多项式的值

 

1

 

1

 

RND  src[,dst]

 

dst=src+215

 

累加器舍入运算

 

1

 

1

 

SAT  src

 

saturate(src)

 

累加器饱和运算

 

1

 

1

 

SQDST  Xmem,Ymem

 

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

 

求距离的平方

 

1

 

1

 

 

posted on 2012-02-13 15:00  知识天地  阅读(10851)  评论(0编辑  收藏  举报