-
DSP
指令一览表
附录
6
TMS320C54x <
/p>
指令系统一览表
(
按指令功能排列
)
一、算术运算指令
1.
加法指令
句
法
表
达
式
说
明
字数
周期
src=src+Smem
1
1
ADD
Smem
,
src
操作数加至累加器
src=src+Smem<
1
1
ADD
Smem
,
TS
,
src
操作数移位后加至累加器
dst=src+Smem<<16
1
1
ADD
Smem
,
16
,
src[
,
dst]
操作数左移
16
位加至累加器
2
2
ADD
Smem[
,
SHIFT]
,
src
[
,
dst]
<
br>Xmem <
br>#lk[
<
br>Smem <
br>Smem <
br>Smem[ <
br>dst=src <
br>Xmem
<
br>#lk
<
br>src[
<
br>—
<
br>( <
br>, src[ <
br>src[ <
br>, <
br>B=B+Smem*A(32 <
br>T=Smem <
br>高位相乘后加到累加器 <
br>
<
br>, src[
<
br>— ( ,
<
br>位操作数
— <
br>双精度
<
br>双精度
<
br>—
<
br>长操作数与 <
br>— <
br>从累加器中减去双精度 <
br>—
<
br>从长操作数中减去 <
br>,
<
br>求累加器 <
br>16 , <
br>SHIFT][ <
br>16 ,
<
br>SHFT] <
br>[
dst=src+Smem<
操作数移位后加到累加器
src=src+Xmem<
1
1
ADD
Xmem
,
SHFT
,
src
操作数移位后加到累加器
dst=Xmem<<16+Ymem<<16
两个操作数分
别左移
16
位后加到累加器
1
1
ADD
,
Ymem
,
dst
dst=src+#lk<
2
2
ADD
,
SHFT]
,
src[
,
dst]
长立即数移位后加到累加器
dst=src+#lk<<16
2
2
ADD
#lk
,
16
,
src[
,
dst]
长立即数左移
16
位后加到累加器
dst=dst+src<
1
1
ADD
src
,
[
,
SHIFT][
,
dst]
累加器移位后相加
dst=dst+src<
1
1
ADD
src
,
ASM[
,
dst]
p>
累加器按
ASM
移位后相加
src=src+Smem+C
1
1
ADDC
Smem
,
src
操作数带进位加至累加器
Smem=Smem+#lk
2
2
ADDM
#lk
,
Smem
长立即数加至存储器
src=src+uns(Smem)
1
1
ADDS
Smem
,
src
符号位不扩展的加法
2.
减法指令
句
法
表
达
式
说
明
字数
周期
src=src
—
Smem
1
1
SUB
Smem
,
src
从累加器中减去操作数
src=src
—
Smem<
1
1
SUB
,
TS
,
src
从累加器中减去移位后的操作数
dst=src
—
Smem<<16
1
1
SUB
,
16
,
src[
,
dst]
从累
加器中减去左移
16
位后的操作数
2
2
SUB
,
SHIFT]
,<
/p>
src[
,
dst]
—
Smem<
操作数移位后与累加器相减
src=
src
—
Xmem<
1
1
SUB
Xmem
,
SHFT
,
src
操作数移位后与累加器相减
dst=
Xmem<<16
—
Ymem<<16
两个操作数分别左移
16
位后相减
1
1
SUB
,
Ymem
,
dst
2
2
SUB
#lk[
,
SHFT]
,
src[
,
p>
dst]
dst=src
—
#1k<
长立即数移位后与累加器相减
dst=src
—
#1k<<16
2
2
SUB
,
16
,
src[
,
dst]
长立即
数左移
16
位后与累加器相减
dst=dst
—
src<
1
1
SUB
,
SHIFT][
,<
/p>
dst]
源累加器移位后与目的累加器相减
dst=dst
—
src<
l
SUB
src
,
ASM[
,
dst]
p>
源累加器按
ASM
移位后与目的累加器相减
l
SUBB
Smem
,
src
SUBC
Smem
,
src
SUBS
Smem
,
src
3.
乘法指令
句
法
MPY
Smem
,
dst
MPYR
Smem
,
dst
MPY
Smem
,
#lk
,
dst
MPY
#lk
,
dst
MPY
A
dst
MPY
A
Smem
MPYU
Smem
,
dst
SQUR
Smem
,
dst
SQUR
A
,
dst
—
从累加器中带借位减操作数
src=src
—
Smem
C
If
(src
—Smem<<15)≥0
src=(src
—
Smem<<15)<<1+1
有条件减法
Else
src=src<
src=src
—
uns(Smem)
符号位不扩展的减法
1
1
1
1
1
1
表
达
式
dst=T*Smem
dst=rnd(T*Smem) <
/p>
dst=Smem*#lk
,
T=Sme
m
dst=T*#lk
dst=T*A(32-16)
dst=uns(T)*uns(Smem)
dst=A(3
2
—
16)*A(32
—
16)
1
说
明
T
寄存器值与操作数相乘
字数
周期
1
1
2
2
1
1
1
1
1
1
1
1
2
2
1
1
1
1
1
T
寄存器值与操作数相乘
(
带舍入
)
1
长立即数与操作数相乘
长立即数与<
/p>
T
寄存器值相乘
T
寄存值与累加器
A
高位相乘
无符号数乘法
累
加器
A
的高位平方
MPY
Xmem
,
Ymem
,
dst
dst=Xmem*Ymem
,
T=Xmem
两个操作数相乘
B=Smem*A(
32-16)
,
T=Smem
操作数
与累加器
A
高位相乘
dst=Smem*Smem
,
T=Smem
操作数的平方
4.
乘法累加
/
减指令
句
法
MAC
Smem
,
src
表
达
式
src=src+T*Smem
,
说
明
操作数与
T
寄存器值相乘后加到累加器
两个操作数相乘后加到累加器
长立即
数与
T
寄存器值相乘后加到累加器
长立即数与操作数相乘后加到累加器
字
周
数
期
1
1
2
2
1
1
2
2
1
1
1
1
1
1
3
3
1
1
1
1
1
1
1
1
1
1
dst=src+Xmern*Ymem
MAC
Xmem
,
Ymem
,<
/p>
src[
,
dst]
T=Xmem
MAC
#lk
p>
,
src[
,
ds
t]
MAC
Smem
,
#lk
,
src[
,<
/p>
dst]
MACR
Smem
,
src
dst=src+T*#lk
dst=src+Smem*#
lk
,
T=Smem
dst=rnd(src+T*Smem)
操作数与
T
寄存器值相乘后加到累加器
(
带
1
舍入
)
,
,
两个操作数相乘后加到累加器
带舍入
)
1
dst=rnd(src+Xmem*Ymem)
MACR
Xmem
,
Ymem
src[
,
dst]
T=Xmem
MACA
Smem[
,
B]
MACA
T
,
,
dst]
MACAR
Smem[
,
B]
MACAR
T
,
,
dst]
MACD
Smem
,
pmad
src
MACP
Sme
m
,
pmad
,
src
MACSU
Xmem
,
Ymem
,
src
MAS
Smem
,
src
—
16)
dst=src+T*A(32
—
16)
操作数与累加器
A
B
1
T
寄存器值与累加器
A
高位相乘
1
B=rnd(B+Smem*A(32
—
16))
,
T
寄存器值与累加器
A
高位相乘后加到
累加
1
T=Smem
B(
带舍入
)
dst=rnd(src+T*A(32
—
16))
src=src+Smem*pmad
,
<
/p>
T=Smem
,
(Smem+1)=Sm
em
src=src+uns(Xmem)*Ymem
T=Xmem
src=src
—
T*Smem
p>
,
累加器
A
高位与
T
寄存器值相乘后与源、
累
1
加器相加
(
带舍入<
/p>
)
操作数与程序存储器值相乘后累加并延迟
2
2
1
src=src+Smem*pmad
,
T=Smem
操作数与程序存储器值相乘后加到累加器
元符号数与有符号数相乘后加到累加器
从累加器中减去
T
寄存器值与操作数的乘积
1
1
1
dst=rnd(src
—
Xmem*Ymem)
p>
,
MASR
Xmem
Ymem
,
src[
,
dst]
从累加器中减去两操作数的乘积<
/p>
(
带舍入
)
T=Xmem
MAS
Xmem<
/p>
,
Ymem
,
s
rc[
,
dst]
MASR
Smem
,
src
MASA
Smem[
,
B]
MASA
T
,
,
dst]
MASAR
T
,
src[
,
dst]
SQURA
Smem
,
src
SQURS
Smem
,
src
2
dst=src
—
Xmem*Ymem
T=Xmem
src=rnd(src
—
T*Smem)
B=B
—
Smem*A(32
16)
T=Smem
dst
=src
—
T*A(32
—
16)
dst=rnd(src
—
T*A(32
—
16))
,
从源累加器中减去两操作数的乘积
从累加器中减去
T
寄存器值与操作数的
乘积
1
(
带舍入
)
,
从累加器
B
中减去操作数与累加器<
/p>
A
高位的
1
乘积
从源累加器中减去
T
寄存器值与累加器
A
高<
/p>
1
位的乘积
从源累加器中减去
T
寄存器值与累加器
A
高
1
位的乘积
带舍入
)
1
1
src=src+Smem*Smem
T=Smem
操作数平方并累加
src=src<
/p>
—
Smem*Smem
,
T=Smem
从累加器中减去操作数的平方
5.
双精度
(32
)
指令
表
达
式
说
明
字数
周期
If
C16=0
dst=Lmem+src
1
1
DADD
Lmem
,
src[
,
dst]
If
C16=1
双精度
/
双
16
位数加到累加器
p>
dst(39
—
16)=Lmem(31<
/p>
—
16)+src(31
—
16)
dst(15
—
0
)=Lmem(15
—
0)+src(15
0)
If
C16=0
dst=Lmem+(T<<16+T)
If
C16=1
DADST
Lmem
,
dst
/
双
16
位数与
T
寄存器值相加
/
p>
减
1
1
p>
dst(39
—
16)=Lmem(31<
/p>
—
16)+T
dst(15
—
0)=Lmem(15
—
0)
—
T
If
C16=0
src=Lmem
—
src
If
C16=1
1
1
DRSUB
Lmem
,
src
/
双
16
位数中减去累加器值
src(39
16)=Lmem(31
—
1
6)
—
src(31
—
16)
src(15
—
0)
=Lmem(15
—
0)
—
src(15
—
0)
If
C16=0
dst=Lme
m
—
(T<<16+T)
If
C16=1
1
1
DSADT
Lmem
,
dst
T
寄存器值相加
/<
/p>
减
dst(39
—
16)=Lmem(31
—
16)
—
T
dst(15
0)=Lmem(15
—
0)
+T
If
C16=0
src=src
—
Lmem
If
C16=1
1
1
DSUB
Lmem
,
src
/
双
16
位数
src(39
16)=src(31
—
16
)
—
Lmem(31
—
16)
src(15
—
0)
=src(15
—
0)
—
Lmem(15
—
0)
If
C16=0
dst=Lme
m
—
(T<<16+T)
If
C16=1
1
1
DSUBT
Lmem
,
dst
T
寄存器值
dst(39
—
16)=Lmem(3
1
—
16)
—
T
dst(15
—
0)=Lmem(
15
—
0)
—
T
6.
专用指令
句
法
ABDST
Xmem
,
Ymem
ABS
src[
,
dst]
CMPL
src[
,
dst]
DELAY
Smem
EXP
src
LMS
Xmem
,
Ymem
MAX
dst
MIN
dst
NEG
src[
,
dst]
NORM
src[
,
dst]
POL
Y
Smem
RND
src[
,
dst]
SAT
src
SQDST
Xmem
,
Ymem
3
句
法
表
达
式
<
/p>
B=B+|A(32
—
16)|
,
A=(Xmem
—
Y
mem)<<16
dst=|src|
dst=
s
r
c
(Smem+1)=Smem
T=number of
sign bits(src)
—
8
B=B+Xmem*Ymem
,
A=(A+Xmem<<16)
+215
dst=max(A
,
B)
dst=min(A
,
B)
dst=-src
dst=src<
dst=norm(src
,
TS)
B=Smem<<16
,
A=
rnd(A*T+B)
dst=src+215
saturate(src)
———
说
明
绝对距离
累加器取绝对值
累加器取反
存储器单元延迟
求累加器的指数
对称
FIR
滤波
求最小均方值
字数
周期
1
1
1
1
1
2
1
1
1
1
1
1
3
1
1
1
1
1
1
1
1
1
FIRS
Xmem
,
Ymem
,
pmad
B=B+A*pmad
,
A=(Xmem+Ymem)<<16
求累加器
(A
,
B)
最大值
1
(A
,
B)
最小值
1
累加器变负
归一化
求多项式的值
累加器舍入运算
累加器饱和运算
1
1
1
1
1
1
B=B+A(32
—
16)*A(32
—
1
6)
,
A=(Xmem
—
Ymem)<<16
求距离的平方
二、逻辑运算指令
1.
与逻辑运算指令
句
法
AND
Smem
,
src
AND
#lk
,
,
src[
,
dst]
AND
src[
SHIFT][
,
dst]
ANDM
#lk
,
Smem
2.
或逻辑运算指令
句
法
OR
Smem
OR
#lk
,
16
,
src[
,
dst]
OR
src[
,
,
dst]
ORM
#lk
,
Smem
3.
异或逻辑运算指令
句
法
XOR
Smem
,
src
XOR
#lk
,
,
src[
,
dst]
XOR
src[
SHIFT][
,
dst]
XORM
#lk
,
Smem
4.
移位指令
句
法
ROL
src
ROLTC
src
ROR
src
SFTC
src
5.
测试指令
句
法
表
达
式
说
明
测试由立即数规定的位域
存储单元与长立即数比较
字数
周期
1
2
1
2
l
2
1
2
1
BIT
Xmem
,
BITC
TC=Xmem(15
—
BITC)
测试指定位
BITF
Smem
,
#lk
TC=(Smemlk)
BITT
Smem
CMPM
Smem
,
#lk
TC=(Smem==#lk)
4
表
达
式
src=src&Smem
dst=srclk<<16
说
明
操作数和累加器相与
字数
周期
1
2
1
2
1
2
2
1
2
AND
#lk[
,
SHFT]
,
src[
,
p>
dst] dst=srclk<
长立即数移位后和累加器相与
dst=dst&src<
源累加器移位后和目的累加器相与
Smem=Smemlk
操作数和长立即数相与
长立即数左移
16
位后和累加器相与
2
表
达
式
src=src|Smem
dst=src|#lk<<16
说
明
操作数和累加器相或
字数
周期
l
2
1
2
1
2
2
1
2
OR
#lk[
,
,
src[
,
dst] dst=src|#lk<
长立即数移位后和累加器相或
dst=dst|src<
源累加器移位后和目的累加器相或
Smem=Smem|#lk
操作数和长立即数相或
长立即数左移
16
位后和累加器相或
2
表
达
式
src=src
∧
Smem
dst=src
∧
#lk<<16
说
明
操作数和累加器相异或
字数
周期
1
2
1
2
1
2
2
1
2
XOR
#lk
,
,
SHFT]
,
src[
,
dst]
dst=src
∧
#lk<
长立即数移位后和累加器相异或
ds
t=dst
∧
src<
源累加器移位后和目的累加器相异或
Smem=Smem
∧
#lk
操作数和长立即数相异或
长立即数左
移
16
位后和累加器相异或
2
表
达
式
Rotate left with carry in
Rotate left with TC in
Rotate right with carry in
说
明
字数
周期
1
1
1
1
1
1
累加器经进位位循环左移
1
累加器经
TC
位循环左移
1
累加器经进位位循环右移
1
1
1
1
SFTA
src
,
SHIFT[
,
dst]
dst=src<
累加器算术移位
if
src(31)=src(30)then src=src<<1
累加器条件移位
累加器逻辑移位
SFTL
src
,
SHIFT[
,
dst] dst=src<
TC=Smem(15
—
T(3
—
O))
测试由
T
p>
寄存器指定的位
CMPR
CC
,
ARx
Compare ARx with AR0
辅助寄存器
p>
ARx
与
ARO
比
较
1
-
-
-
-
-
-
-
-
-
上一篇:最新圣诞英文祝福语短语句子大全
下一篇:圣诞节英语广播稿