ABS2 src2,dst | .L | 对src2的高、低半字的2 个有符号16位数取绝对值,有饱和 |
ADDAD src2,src1,dst | ..D | 使用双字寻址模式的整数加法 |
ADD2 src1,src2,dst | .L.S.D | src1和src2的高低半字分别做有符号加法 |
ADD4 src1,src2,dst | .L | Src1和src2的4 个字节分别做有符号加法 |
ADDKPC src1,src2,dst | .S2 | 7位有符号常数src1左移2位,然后加到饱和ADDKPC指令的取指包第1条指令地址(PCE1);3位无符号常数src2指定插入的空操作NOP数。 |
AND src1,src2,dst | .L.S.D | |
ANDN src1,src2,dst | .L.S.D | 先将src2取反,再和src1按位“与” |
AVG2 src1,src2,dst | .M | 分别求src1和src2高、低半字的平均值,向上取整,结果置入dst |
AVGU4 src1,src2,dst | .M | 分别求src1和src2的4个无符号字节的平均值,向上取整。 |
BDEC scst10,dst | .S | 当dst>=0时,将dst内容减1并执行相对转移,转移地址为BDEC指令所在的取指包第一条指令地址(PCE1)与scst10(10位有符号数)左移2位后相加的和。如dst<0,无操作。 |
BITC4 src2,dst | .M | 将src2的4个字节内的“1”的个数记入dst的相应字节。 |
BITR src2,dst | .M | 位反转指令,将src2按位序(31~0)反转送到dst的位(31~0) |
BNOP src2,src1 注:src2为12为有符号数scst12 | ..S2 | 执行绝对转移,转移地址位BNOP指令所在的取指包第1条指令地址(PCE1)与12位有符号数src2左移2位后相加的和。Src1指定插入的空操作数NOP数(0~5) |
BNOP src2,src1 注:src2为寄存器 | .S2 | 执行绝对转移,转移地址由src2的内容决定。Src1指定插入的空操作数NOP数(0~5) |
BPOS scst10,dst | .S | 与BDEC内容相似,差别仅在与dst内容不变 |
CMPEQ2 src1,src2,dst | .S | 分别比较src1和src2高低半字,若高半字相等则dst的bit 1置1,否则置0;同样,低半字的比较结果置dst的bit 0为1或0 |
CMPEQ4 src1,src2,dst | .S | 分别比较src1和src2的4个字节,比较结果置dst的bit 3~bit 0位为1或0 |
CMPGT2 src1,src2,dst | .S | 分别比较src1和src2高低半字,若src1高半字>src2高半字,则dst的bit 1位置1,否则置0;通样,低位半字的比较结果置dst的bit 0位为1或0 |
CMPGTU4 src1,src2,dst | .S | 分别比较src1和src2的4个字节,若src1最高字节>src2最高字节,则dst的bit3置1,否则置0;同样,其他3个字节的比较结果置dst的bit 2位~bit 0位为1或0 |
CMPLT2 src2,src1,dst | .S | 分别比较src2和src1的高低半字,若src2高半字<src1高半字,则dst的bit 1置1,否则置0;同样,低位半字结果置dst的bit 0位为1或0 |
CMPLTU4 src2,src1,dst | .S | 分别比较src2和src1的4个字节(无符号数),若src1最高字节<src2最高字节,则dst的bit 3置1,否则置0;同样,其他3个字节的比较结果置dst的bit 2位~bit 0位为1或0 |
DEAL src2,dst | .M | 提取src2的奇数及偶数位,组成dst的高、低半字 |
DOTP2 src1,src2,dst | .M | 2个16位与16位数的点积和指令,src1与src2中高低对应的半字相乘,再求和。Dst为64位长型量时,高位为符号扩展。Dst为32位整型量时 ,取64位点积的低32位。 |
DOTPN2 src1,src2,dst | .M | 2个16位与16位乘积之差指令,src1与src2中高半字的积减去低半字的积 ,差值送dst |
DOTPNRSU2 src1,src2,dst | .M | 带求反、移位及四舍五入的点积指令。Src1(有符号数)和src2(无符号数)高半字的积减去低半字的积 ;差值加8000h后右移16位,结果置入dst |
DOTPRSU2 src1,src2,dst | .M | 与DOTPNRSU2类似,Src1(有符号数)和src2(无符号数)高半字的积加低半字的积 ;和数加8000h后右移16位,结果置入dst |
DOTPRUS2 src2,src1,dst | .M | 与上一行DOTPRSU2指令差别仅仅是:src1(有符号数)和src2(无符号数)在指令的位置不同。 |
DOTPSU4 src1,src2,dst | .M | 先求src1(有符号数)与src2(无符号数)4个字节对应的积,再相加 ,和数送入dst。 |
DOTPU4 src1,src2,dst | .M | 与上一行指令的差别仅仅是:src1和src2都是无符号数,和数也是无符号数。 |
GMPY4 src1,src2,dst | .M | 做4个字节的Galois域乘法。 |
LDDW *+baser[offsetR],dst LDDW *+baseR[ucst5],dst | .D | 从内存读取64位双精度到寄存器,偏移地址可以放在寄存器中,也可以是5位常数。 |
LDNDW *mem,dst LDNW *mem,dst | .D | 无边界调整的内存读取,1次读64位 无边界调整的内存读取,1次读32位 |
MAX2 src1,src2,dst | .L | 分别比较有符号数src1和src2的高低半字,取其中的大数送到dst的相应位置 |
MAXU4 src1,src2,dst | .L | 分别比较有符号数src1和src2的4个无符号字节,取其中的大数送到dst的相应位置 |
MIN2 src1,src2,dst | .L | 分别比较有符号数src1和src2的高低半字,取其中的小数送到dst的相应位置 |
MINU4 src1,src2,dst | .L | 分别比较有符号数src1和src2的4个无符号字节,取其中的小数送到dst的相应位置 |
MPY2 src1,src2,dst | .M | 2个源操作数的高低有符号半字,对应相乘;目的操作数是64位的双字,低位字存放低半字的积,高位字存放高半字的积。 |
MPYHI src1,src2,dst | .M | Src1的高半字与src2的32位做乘法,结果是64有符号数,存入1对寄存器。 |
MPYHIR src1,src2,dst | .M | 16位与32位带舍入的乘法:src1的高半字与src2的32位做乘法,乘积加4000h后右移15位,结果的低32位存入dst |
MPYIH src2,src1,dst | .M | Src1的高半字与src2的32位做乘法,结果是64有符号数,存入1对寄存器(与MPYHI指令相比,只是src1和src2的位置不同)。 |
MPYIHR src2,src1,dst | .M | 与MPYHIR相比 ,只是src1,src2位置不同。 |
MPYIL src2,src1,dst | .M | Src1的低半字与32位的src2做乘法,结果是64位的有符号数,存入1对寄存器。 |
MPYILR src2,src1,dst | .M | 16位与32位的带舍入乘法:src1的低半字与32 位的src2做乘法,乘积加4000h后右移15位,结果的低32位存入dst |
MPYLI src1,src2,dst | .M | 与MPYIL相比 ,只是src1、src2位置不同。 |
MPYLIR src1,src2,dst | .M | 与MPYILR相比,只是src1、src2位置不同。 |
MPYSU4 src1,src2,dst | .M | 有符号src1与无符号src2的4个字节对应相乘,4个16位乘积依序存放到一对寄存器内 |
MPYUS4 src1,src2,dst | .M | 与MPYSU4的差别仅在于src1、src2位置不同 |
MPYU4 src1,src2,dst | .M | 无符号src1与无符号src2的4个字节对应相乘,4个16位乘积依序存放到一对寄存器内 |
MVD src2,dst | .M | 通过功能单元.M把寄存器src2的内容送到寄存器dst,用时4个周期。 |
MVK cst,dst | .L.S.D | 将常数cst写入dst低半字,符号扩展 |
MVKL cst,dst MVC IER,B0 MOV dst,src | .L.S.D | 将常数cst或cst的低16位写入dst低半字,符号扩展。 把IER (中断使能寄存器)的当前值 赋予 寄存器B0 (Dst)<-(Src) ,将原操作数(字节或字)传送到目的地址。 |
OR src1,src2,dst | .L.S.D | Src1和src2按位“或” |
PACK2 src1,src2,dst | .L.S | 将src1与suc2的低16位提取组成一个新的整型数,送dst |
PACKH2 src1,src2,dst | .L.S | 将src1与suc2的高16位提取组成一个新的整型数,送dst |
PACKH4 src1,src2,dst | .L | 将src1与suc2的低位字节提取组成一个新的整型数,送dst |
PACKHL2 src1,src2,dst | .L.S | 将src1高16位与src2的低16位提取组成一个新的整型数,送dst |
PACKL4 src1,src2,dst | .L | 将src1及src2偶位字节提取组成一个新的整型数,送dst |
PACKLH2 src1,src2,dst | .L.S | 将src1的低16位与src2的高16位提取组成一个新的整型数,送dst |
POTL src2,src1,dst | .M | 将src2旋转左移,无符号数src1的最低5位指定旋转左移位数。 |
进栈指令 PUSH (push onto the stack), 出栈指令 POP (pop from the stack)
汇编格式:PUSH SRC POP DST
指令的基本功能:PUSH指令在程序中常用来暂存某些数据,而POP指令又可将这些数据恢复。
PUSH SRC ; (SP)<-(SP)-2 (SP)<-(SRC)
POP DST ;(DST)<-((SP)) (SP)<-(SP)
指令支持的寻址方式:push 和 pop指令不能使用立即数寻址方式。 指令对标志位的影响:PUSH 和 POP指令都不影响标志位。
指令的特殊要求:①PUSH 和 POP指令只能是字操作,因此,存取字数据后,SP的修改必须是+2 或者 -2; ②POP指令的DST不允许是CS寄存器;
SADD src1,src2,dst | .S | Src1与src2高低半字分别做带饱和的加法,不影响SAT位。 |
SADDU4 src1,src2,dst | .S | Src1与src2的4个字节对应做无符号带饱和加法 ,不影响SAT位 |
SADDSU2 src1,src2,dst | .S | 有符号数src1和无符号数src2的高低半字分别做带饱和加法,不影响SAT位 |
SADDUS2 src1,src2,dst | .S | 无符号数src1和有符号数src2的高低半字分别做带饱和加法,不影响SAT位 |
SHFL src2,dst | .M | Src2的高半字与低半字按位顺序交插,形成新字送dst |
SHLMB src1,src2,dst | .L.S | 左移并拼接:src2左移8位,再把src1的最高字节续为其最低字节,形成新字送dst |
SHR2 src2,src1,dst | .S | Src2的高低半字分别算术右移,有符号扩展,src1的低5位或ucst5确定移位次序。 |
SHRMB src1,src2,dst | .L.S | 右移并拼接:src2右移8位,再把src1的最低字节续为其最高字节,形成新字送dst |
SHRU2 src2,src1,dst | .S | Src2的高低半字视作2个无符号数,分别算术右移,无符号扩展,src1的低5位或ucst5确定移位次数 |
SMPY2 src1,src2,dst | .M | Src1与src2高低半字对应相乘,结果为64位,其他同SMPY指令。 |
SPACKU4 src1,src2,dst | .S | 将src1及src2 4个有符号16位数有饱和低转为4个8位无符号数,送dst |
SSHVL src2,src1,dst | .M | 带符号扩展、移位方向、长度可变的左移指令:src1为补码数,且绝对值不大于31。如src1为正,src2左移;如src1为负,src2带符号扩展地右移。移位中符号有变,取饱和值,并置SAT位为1。 |
SSHVR src2,src1,dst | .M | 带符号扩展、移位方向、长度可变的右移指令:src1为补码数,且绝对值不大于31。如src1为正,src2带符号扩展右移;如src1为负,src2左移。移位中符号有变,取饱和值,并置SAT位为1。 |
STDW src,*mem | .D | |
STNDW src,*mem | .D | |
STNW src,*mem | .D | |
SUB2 src1,src2,dst | .S.D | Src1与src2的高低半字分别做有符号减法 |
SUB4 src1,src2,dst | .L | Src1与src2的4个字节分别做有符号减法,得数送入dst的对应字节 |
SUBABS4 src1,src2,dst | .L | Src1与src2的4个字节分别做无符号减法,将各个差值的绝对值送入dst |
SWAP2 src2,dst | .L.S | 将src2的高低半字交换,结果送dst |
SWAP4 src2,dst | .L | 将src2的高低半字的2个字节交换 ,结果送dst |
UNPKHU4 src2,dst | .L.S | 将src2高半字的2个字节分别送dst的byte 2、byte 0,其余2字节补0 |
UNPKLU4 src2,dst | .L.S | 将src2低半字的2个字节分别送dst的byte 2、byte 0,其余2字节补0 |