DSP指令大全.docx
- 文档编号:8134297
- 上传时间:2023-01-29
- 格式:DOCX
- 页数:31
- 大小:24.33KB
DSP指令大全.docx
《DSP指令大全.docx》由会员分享,可在线阅读,更多相关《DSP指令大全.docx(31页珍藏版)》请在冰豆网上搜索。
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=srclk< 长立即数移位后和累加器相与 2 2 AND#lk,16,src[,dst] dst=srclk<<16 长立即数左移16位后和累加器相与 2 2 ANDsrc[,SHIFT][,dst] dst=dst&src< 源累加器移位后和目的累加器相与 1 1 ANDM#lk,Smem Smem=Smemlk 操作数和长立即数相与 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=(Smemlk) 测试由立即数规定的位域 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 53§/[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~0)移位后加
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- DSP 指令 大全