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 |