关键词不能为空

当前您在: 主页 > 英语 >

DSP指令大全(最全)

作者:高考题库网
来源:https://www.bjmy2z.cn/gaokao
2021-02-28 08:13
tags:

-

2021年2月28日发(作者:完成的英文)



附录


6 TMS320C54x

< p>
指令系统一览表


(


按指令功能排列


)


一、算术运算指令



1.


加法指令








ADD Smem



src


ADD Smem



TS



src








src=src+Smem


src=src+Smem<






操作数加至累加器



操作数移位后加至累加器









1


1


1


1


1


2


1


1


2


2


1


1


1


2


1


ADD Smem



16



src[



dst] dst=src+Smem<<16


ADD


Smem[



SHIFT]



dst=src+Smem<


src[



dst]


ADD Xmem



SHFT



src


src=src+Xmem<


操作数左移


16


位加至累加器


1


操作数移位后加到累加器



操作数移位后加到累加器



2


1


两个操作数分别左移


16


位后


1


ADD Xmem


Ymem



dst dst=Xmem<<16+Ymem<<16


加到累加器



ADD #lk[



SHFT]



src[



dst =src+#lk<


dst]


ADD #lk< /p>



16



src [



dst]


dst=src+#lk<<16


ADD src

< p>


[



SHIFT][< /p>



dst] dst=dst+src<


ADD src



ASM[

< p>


dst]


ADDC Smem



src


ADDM #lk



Smem


ADDS Smem



src


2.


减法指令








SUB Smem



src


SUB Smem



TS



src








src=src



Smem


src=src



Smem<






从累加器中减去操作数



dst=dst+src<


src=src+Smem+C


Smem=Smem+#lk


src=src+uns(Smem)


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



2


长立即数左移


16


位后加到累


2


加器



累加器移位后相加



操作数带进位加至累加器



长立即数加至存储器



符号位不扩展的加法



1


1


2


1


累加器按


ASM


移位后相加



1








1


1


1


1


2


1


1


2


2


1


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


1


作数



从累加器中减去左移

< p>
16


位后


1


的操作数



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



2


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



1


SUB Smem



16



src[



dst] dst=src



Smem<<16


SUB


Smem[



SHIFT]



dst=src



Smem<


src[



dst]


SUB Xmem



SHFT



src


src=src


Xmem<


两个操作数分别左移

< p>
16


位后


1


SUB X mem



Ymem


< br>dst dst=Xmem<<16



Ymem<<16


相减



SUB #lk[



SHFT]



src[< /p>



dst=src


#1k<


dst]


SUB #lk



16



src[



dst]


dst=src



#1k<<16


SUB src[



SHIFT][< /p>



dst]


dst=dst

< p>


src<


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


2




长立即数左移

16


位后与累加


2


器相减



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


1


器相减




SUB src



ASM[

< p>


dst]


SUBB Smem



src


dst=dst



src<


src=src



Smem

< p>


C




源累加器按


ASM


移位后与


l


目的累加器相减



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



1


l


1


SUBC Smem



src


If (src


—Smem<<15)≥0



src=(src



Smem<<15)<<1+1


有条件减法



Else


src=src<


src=src



uns(Smem)


符号位不扩展的减法



1


1


SUBS Smem



src


3.


乘法指令








MPY Smem



dst


MPYR Smem



dst


1


1








dst=T*Smem


dst=rnd(T*Smem)


dst=Xmem*Ymem


T=Xmem


dst=T*#lk


dst=T*A(32-16)


B=Smem*A(32-16)


T=Smem


dst=uns(T)*uns(Smem)


dst=Smem*Smem


T=Smem

< br>,








T


寄存器值与操作数相乘









1


1


T


寄存器值与操作数相乘


(

< p>


1


1


舍入


)


两个操作数相乘



1


1


2


2


MPY Xmem



Ymem



dst


MPY Smem

< br>,


#lk



dst


MPY #lk



dst


MPY


A dst


MPY


A Smem


MPYU Smem



dst


SQUR Smem



dst


SQUR A



dst


4.

< br>乘法累加


/


减指令








MAC Smem



src


dst=Smem *#lk



T=Smem


长立即数与操作数相乘



长立即数与< /p>


T


寄存器值相乘



2


2


T


寄 存值与累加器


A


高位相


1


1




操作 数与累加器


A


高位相乘



1


1


无符号数乘法



操作数的平方



1


1


1


1


1


1








dst=A(32



16)*A(32



16)


累加器


A


的高位平方

< br>








src=src+T*Smem







操作数与


T


寄存器值相乘后加


1


1


到累加器



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



1


1


长立即数与


T

寄存器值相乘后


2


2


加到累加器



MAC Xmem



Ymem



dst =src+Xmern*Ymem


T=Xmem


src[



dst]


MAC #lk



src[

< p>


dst]


dst=src+T*#lk


MAC Smem



#lk

< p>


src[



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


2


2


dst=s rc+Smem*#lk



T=Smem


dst]


累加器



MACR Smem



src


dst=rnd(src+T*Smem)


操作数与


T


寄存器值相乘后加


1


1


到累加器


(


带舍入


)


MACR Xmem


,< /p>


Ymem



dst=rnd(src+X mem*Ymem)



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

< p>
1


1


T=Xmem


src[



dst]


(


带舍入


)



MACA Smem[



B]


B=B+Smem*A(32



16)


T=Smem



操作数与累加器

< p>
A


高位相乘后


1


1


加到累加器


B


T

寄存器值与累加器


A


高位相


1


1




MACA T



src[



dst]


dst=src+T*A(32



16)


MACAR Smem[



B]


B=rnd(B+ Smem*A(32



16))



T


寄存器值与累加器


A

高位相


1


1


T=Smem < /p>


乘后加到累加


B(


带舍入


)


累加器


A


高位与


T


寄存器值相


1


1


乘后与源、


累加器相加


(


带舍入


)


MACAR T



src[



dst] dst=rnd(src+T*A(32



16))


MACD Smem



pmad



src=src+Smem*pmad


,< /p>



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


2


3


src


T=Smem

< p>


(Smem+1)=Smem


累加并延迟



MACP Smem



pmad



sr c=src+Smem*pmad


src


T=Smem



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


2


3


加到累加器



MACSU


Xmem



src=src+uns(Xmem)*Ymem



元符号数与有符号数相乘后加


1


1


T=Xmem


Ymem



src


到累加器



MAS Smem



src


src=src



T*Smem


从累加器中减去


T


寄存器值与


1


1


操作数的乘积



MASR Xmem



Ymem



dst=rnd(src



Xmem*Ymem)



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


1


1


T=Xmem


src[



dst]



(


带舍入


)


MAS Xmem



Ymem



dst=src



X mem*Ymem


T=Xmem


src[



dst]


MASR Smem



src


MASA Smem[



B]


src=rnd(src



T*Smem)


B=B



Smem*A(32



16)


T=Smem



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


1


1


乘积



从 累加器中减去


T


寄存器值与


1


1


操作数的乘积


(

< br>带舍入


)



从累加器


B


中减去操作数与累


1


1


加器


A


高 位的乘积



从源累加器中减去


T


寄存器值


1


1


与 累加器


A


高位的乘积



从源累加器中减去


T


寄存器值


与累加器


A


高位的乘积


(


带舍


1


1



)



,< /p>


操作数平方并累加



1


1


MASA T


< br>src[



dst]


dst= src



T*A(32



16)


MASAR T



src[



dst]


dst=rnd (src



T*A(32


< p>
16))


src=src+Smem*Smem


T=Smem


src=src



Smem*Smem


T=Smem


SQURA Smem



src


SQURS Smem



src


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



1


1


5.


双精度

(32


位操作数


)


指令

< p>























If C16=0


dst=Lmem+src


DADD Lmem



src[



If C16=1


双精度


/



16


位数加到累加器



dst]


dst(39


< p>
16)=Lmem(31



16)+src(31



16)


dst(15



0)=Lmem(15



0)+src(15



0)


DADST Lmem



dst


If C16=0


1


1


双精度


/



16


位数与


T


寄存器值


1


1



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


If C16=1


dst(39



16)=Lmem(3 1



16)+T


dst(15



0)=Lmem(15


< br>0)



T


相加


/




If C16=0


src=Lmem



src


双精度


/



16


位数中减去累加器


1


DRSUB Lmem



src


If C16=1




src(39


16)=Lmem(31



16 )



src(31


< br>16)


src(15



0)= Lmem(15



0)



src(15



0)


If C16=0


dst=Lmem



(T <<16+T)


DSADT Lmem



dst


If C16=1


dst(39



16)=Lmem(3 1



16)



T


dst(15



0)=Lmem( 15



0)+T


1


长操作数与


T


寄存器值相加


/




1


1


DSUB Lmem



src


If C16=0


src=src



Lmem


从累加器中减去双精度


/


16



If C16=1


1




src(39


16)=src(31



16)



Lmem(31


< br>16)


src(15



0)= src(15



0)



Lmem(15



0)


1


If C16=0


dst=Lmem



(T<<16+T)


DSUBT Lmem



dst


If C16=1


dst(39



16)=Lmem(3 1



16)



T


dst(15



0)=Lmem( 15



0)



T


6.


专用指令














从长操作数中减去


T


寄存器值



1


1












1


1


ABDST Xmem



Ymem B =B+|A(32



16)|



A=(Xmem



Ymem)<<16


绝对距离



ABS src[



dst]


CMPL src[



dst]


DELAY Smem


EXP src


dst=|src|

< p>
dst=


s


r


c



(Smem+1)=Smem


T=number of sign bits(src)



8


———


累加器取绝对值



1


1


累加器取反



1


1


存储器单元延迟



1


1


求累加器的指数



1


1


对称


FIR


滤波




求最小均方值



2


3


1


1


FIRS Xmem


< p>
Ymem



B=B+A*pmad



A=(Xmem+Ymem)<<16


pmad


LMS Xmem



Ymem


MAX dst


MIN dst


NEG src[



dst]


B=B+Xmem*Ymem


A=(A+Xmem<<16)+215


dst=max(A



B)


dst=min(A



B)


dst=-src


求累加器


(A



B)



1


1


大值



求 累加器


(A



B)


1


1


小值



累加器变负



1


1



NORM src[



dst]


POL


Y Smem


RND src[



dst]


SAT src


dst=src<



dst=n orm(src



TS)


B=Sme m<<16



A=rnd(A*T+B)


dst=src+215


saturate(src)



归一化



求多项式的值



1


1


1


1


累加器舍入运算



1


1


累加器饱和运算



1


1


求距离的平方



1


1


B=B+A(32



16)*A(32



16)


SQDST Xmem



Ymem


A=(Xmem



Ymem)<<16


二、逻辑运算指令



1.


与逻辑运算指令








AND Smem



src








src=src&Smem






操作数和累加器相与









1


1


2


2


1


2


AND #lk[



SHFT]



src[


,< /p>


dst] dst=src&#lk<


AND #l k



16



s rc[



dst]


AND src[



SHIFT][


< br>dst]


ANDM #lk



Smem


2.


或逻辑运算指令








OR Smem








src=src|Smem


dst=src&#lk<<16


dst=dst&src<


Smem=Smem&#lk


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



2 < /p>


长立即数左移


16


位后和累加器


2


相与



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


1


相与



操作数和长立即数相与



2








l


1


2


2


1


2






操作数和累加器相或



OR #lk[



SHFT]



src[



dst] dst=src|#lk<


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


2


OR #lk



16

< br>,


src[



dst]


OR src[



SHIFT][



dst]


ORM #lk



Smem


3.


异或逻辑运算指令








XOR Smem



src








src=src



Smem







操作数和累加器相异或



dst=src|#lk<<16


dst=dst|src<


Smem=Smem|#lk


长立即数左移

< br>16


位后和累加


2


器相或



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


1


相或



操作数和长立即数相或



2








1


1


2


2


1


2



XOR


#lk



[



SHFT]



src[


< p>
dst=src


dst]


#lk<


XOR #lk



16



src[



dst]


XOR src[



SHIFT][< /p>



dst]


XORM #lk



Smem


4.


移位指令














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



2


长立即数左移


16


位后和累加器相


2


异或



dst=src



#lk<<16


dst=dst


src<



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


1


异或



2



Smem=Smem



#lk


操作数和长立即数相异或












ROL src


ROLTC src


ROR src


Rotate left with carry in


Rotate left with TC in


Rotate right with carry in


累加器经进位位循环左


1




累加器经


TC


位循环左移


1


累加器经进位位循环右


1




累加器算术移位



1


1


1








1


l


2


1


2


1


1


1


1


1


1


1


dst=src<


SFTA src



SHIFT[



dst]


shift}


SFTC src


5.


测试指令














SFTL src



SHIFT[



dst] dst=src<


if src(31)=src(30)then src=src<<1


累加器条件移位



累加器逻辑移位







BIT


Xmem


< br>TC=Xmem(15



BITC)


测试指定位



BITC


BITF


Smem



TC=(Smem&#lk)


#lk


BITT Smem


测试由立即数规定的


2


位域



测试由


T


寄存器指定


TC=Smem(15



T(3



O))


1


的位



存储单元与长立即数


2


比较



CMPM Smem



TC=(Smem==#lk)


#lk


CMPR


CC



辅助寄存



ARx



Compare ARx with AR0


1


ARx


ARO


比较



三、程序控制指令



1.


分支转换指令








B[D] pmad


BACC[D] src


BANZ[D] pmad



Sind








PC=pmad(15



0)


PC=src(15



0)


if(Sind≠0)


PC=pmad(15



0)






无条件分支转移




周期





2


4/[2



]


按累加器规定的地址转


1


6/[4



]




then


辅助寄存器不为


O


就转


4?/2§< /p>


/[2


2





]


then


条件分支转移




2


5?/3§

/[3



]


BC[D]


pmad



cond[



if(cond(s))


PC=pmad(15



0)


cond[



cond]]


FB[D] extpmad


FBACC[D] src


2.


调用指令














PC=pmad(15



0)


XPC=pmad(22



16)


PC=src(15



0)


X PC=src(22



16)


无条件远程分支转移



2


4/[2



]



按累加器规定的地址远


1


6/[4



]


程分支转移




周期










CALA[D] src


——


SP= PC



PC=src(15



0)












< br>子


1


程序


< br>无







2


程序




有< /p>







2


程序



6/[4



]


CALL[D] pmad


——


SP =PC



PC=pmad(15



0)


4/[2§


]

5?/3§


/[3



]


6/[4



]


CC[D] pmad



cond[< /p>



cond[



if(cond(s))then


——


SP=PC


cond]]


PC=pmad(15



0)


FCALA[D] src








——


SP=PC



——


SP=XPC








1


PC=src(15



0)



XPC=src(22

< br>—


16)


用子程序



——


SP=PC



——


SP=XPC


PC=pmad(15



0)


XPC=pmad(22



16)









2



用子程序



FCALL[D] extpmad


3.


中断指令








INTR K








4[2



]












3


3


——


SP=PC


PC=IPTR(15



7)+K<<2

< br>,


不可屏蔽的软件中断,


关闭其他可屏蔽


1


INTM=1


中断


< /p>


不可屏蔽的软件中断,


不影响


INTM< /p>



1






远程返回



字数







1


6/[4



]


6/[4



]


TRAP K


——


SP=PC



PC=IPTR(15


< br>7)+K<<2


4.


返回指令








FRET[D]


FRETE[D]








XPC=SP++



PC=SP++


XPC=SP++



PC=SP++< /p>



开中断,从远程中断返回


1


INTM=O


条件返回



返回



开中断,从中断返回



1


1


1


RC[D]


cond[



cond[


,< /p>


if(cond(s)) then PC=SP++


cond]]


RET[D]


RETE[D]


RETF[D]


5.


重复指令








RPT Smem


RPT #K


RPT #lk


RPTB[D] pmad








Repeat single



RC=Smem


Repeat single



RC=#K


Repeat single



RC=#lk


PC=SP++


PC=SP++



INTM=O


PC=RTN



SP++

< br>,


INTM=O


5?3§


/[ 3



]


5/[3



]


5/[3



]


3/[1



]









1


1


2


4/[2



]


2


开中断,从中断快速返回


1














1


(Smem)+1




重复执行下条指令


k



1



1


重复执行下条指令


#lk+1




2


2


Repeat


block



RSA=PC+2[4#]

< p>


块重复指令



REA=pmad



1


RPTZ dst



#lk


Repeat single



RC= #lk



dst=O


6.


堆栈管理指令


















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


2



O









FRAME K


SP=SP+K


,< /p>


-


128≤k≤127



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



POPD


Smem


POPM


MMR


PSHD


Smem


PSHM


MMR


Smem=SP++


MMR=SP++


——


SP=Smem


——


SP=MMR


1


1


1


1


1


1


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


1




将数据从栈顶弹出至


MMR


将数据压人堆栈



< br>MMR


压人堆栈



1


1


l


7.


其他程序控制指令







IDLE K








idle(K)



1≤k≤3













4


保持空转状态,


直到中断发


1




MAR Smem


If CMPT=0



then modify ARx




ARP is unchanged


If


CMPT=1


and


ARx≠AR0



then


modify


ARx




修改辅助寄存器



ARP=x


If


CMPT=1


and


ARx=AR0



then


modify


AR(ARP)




ARP is unchanged


no operation


software reset


STN(SBIT)=0


STN(SBIT)=1


空操作



软件复位



状态寄存器位复位



状态寄存器位置位



1


1


NOP


RESET


RSBX N



SBIT


SSBX N



SBIT


1


1


1


1


1


1


3


1


1


1


If(cond(s))then


execute


the


next


n


XC n



cond[



cond[



cond]]


有条件执行


< br>instructions



n=1or2

< p>
注:


?


条件


< p>




§


条件




< br>,※延迟指令。



四、加载和存储指令



1.


加载指令


















双精度


/



16


位长字加载累加器



将操作数加载到累加器



字数



周期



1


1


1


1


1


1


2


DLD Lmem



dst=Lmem


dst


LD Smem



dst dst=Smem


LD


Smem



dst=Smem<


TS



dst


LD


Smem



dst=Smem<<16


16



dst


LD


Smem[


< br>dst=Smem<


操作数按


TREG( 5



0)


移位后加载到累加器


1


操作数左移


16


位后加载累加器



操作数移位后加载累加器



1


2

-


-


-


-


-


-


-


-



本文更新与2021-02-28 08:13,由作者提供,不代表本网站立场,转载请注明出处:https://www.bjmy2z.cn/gaokao/679801.html

DSP指令大全(最全)的相关文章