MMX指令
| EMMS | MMX狀態置空: 將FP特征字置空(全1),使后續浮點指令可以使用浮點寄存器,其他MMX指令自動置FP為全0.本指令應在所有MMX例程結束和調用可含有FP指令的例程時使用,以清除MMX狀態. | |||||||||||||||||||||||||
| MOVD mm,r/m32 MOVD r/m32,mm | 轉移32位數據: 將32位數據從整型寄存器/內存移到MMX寄存器,和反向移動.MOVD不能在MMX寄存器之間,內存之間及整型寄存器之間移動數據.目標操作數為MMX寄存器時,32位源操作數寫入目標寄存器的低32位.目標寄存器"0擴展"為64位.源操作數為MMX寄存器時,該寄存器的低32位被寫入目標操作數. | |||||||||||||||||||||||||
| MOVQ mm,r/m64 MOVQ r.m64,mm | 轉移64位數據: 將64位數據從整型寄存器/內存移到MMX寄存器,和反向移動.目標操作數和源操作數可為MMX寄存器,64位內存操作數.但MOVQ不能在內存和內存之間進行數據轉移. | |||||||||||||||||||||||||
| PACKSSWB mm,mm/m64 | 有符號飽和方式數據成組: 將MMX寄存器和MMX寄存器/內存單元中的有符號字組變成MMX寄存器的有符號字節組.和將MMX寄存器和MMX寄存器/內存單元中的有符號雙字組變成MMX寄存器的有符號字組.(注1) | |||||||||||||||||||||||||
| PACKUSWB mm,mm/m64 | 無符號飽和方式數據成組 將MMX寄存器和MMX寄存器/內存單元中的有符號字組變成MMX寄存器的無符號字節組.(注1) | |||||||||||||||||||||||||
| PADDB mm,mm/m64 | 環繞方式數據組相加: 按環繞方式將MMX寄存器/內存單元中的字節組(字組,雙字組)相加到MMX寄存器中(注1) | |||||||||||||||||||||||||
| PADDSB mm,mm/m64 | 飽和方式有符號數據組相加: 按飽和方式將MMX寄存器/內存單元中的有符號字節組(字組)相加到MMX寄存器中的有符號字節組(字組)數據.(注1) | |||||||||||||||||||||||||
| PADDUSB mm,mm/m64 | 飽和方式無符號數據組相加: 按飽和方式將MMX寄存器/內存單元中的無符號字節組(字組)相加到MMX寄存器中的無符號字節組(字組)數據.(注1) | |||||||||||||||||||||||||
| PAND mm,mm/m64 | 逐位邏輯與: 將MMX寄存器/內存單元中的64位數據進行與操作,結果存于MMX寄存器中. | |||||||||||||||||||||||||
| PANDN mm,mm/m64 | 逐位邏輯與非: 將MMX寄存器中的64位值取反,再將取反后的MMX寄存器與MMX寄存器/內存單元中的64位數據進行與操作,結果存于MMX寄存器中. | |||||||||||||||||||||||||
| PCMPEQB mm,mm/m64 | 成組數據的相等比較: 將MMX寄存器與MMX寄存器/內存單元中的字節組(字組,雙字組)數據進行相等比較. 該指令將目標操作數和源操作數的相應數據元素進行比較,相等則目標寄存器的對應數據元素被置為全1,否則置為全0. eg:PCMPEQE mm,mm/m64 
 | |||||||||||||||||||||||||
| PCMPGTB mm,mm/m64 | 成組數據的相等比較: 將MMX寄存器與MMX寄存器/內存單元中的字節組(字組,雙字組)數據進行大于比較. 該指令將目標操作數和源操作數的相應數據元素進行比較,大于則目標寄存器的對應數據元素被置為全1,否則置為全0.(參考上一條) | |||||||||||||||||||||||||
| PMADDWD mm,mm/m64 | 數據組(字組)的乘加: 將MMX寄存器與MMX寄存器/內存單元中的字組數據相乘,然后將32位結果逐對相加并作為雙字存于MMX寄存器中. eg:PMADDWD mm,mm/m64 
 | |||||||||||||||||||||||||
| PMULHW mm,mm/m64 | 成組數據(字組)的乘后取高位: 將MMX寄存器與MMX寄存器/內存單元中的有符號字組數據相乘,然后將結果的高16位存入MMX寄存器. eg:PMULHW mm,mm/m64 
 | |||||||||||||||||||||||||
| PMULLW mm,mm/m64 | 成組數據(字組)的乘后取低位: 將MMX寄存器與MMX寄存器/內存單元中的有符號字組數據相乘,然后將結果的低16位存入MMX寄存器.(參考上一條) | |||||||||||||||||||||||||
| POR mm,mm/m64 | 逐位邏輯或: 將MMX寄存器/內存單元中的64位數據進行或操作,結果存于MMX寄存器中. | |||||||||||||||||||||||||
| PSLLW mm,mm/m64 | 成組數據的邏輯左移: 將MMX寄存器中的字(雙字,四字)數據按MMX寄存器/內存單元指定的個數左移,低位移入0. 將MMX寄存器中的字(雙字,四字)數據按8位立即數指定的個數左移,低位移入0. | |||||||||||||||||||||||||
| PSRAW mm,mm/m64 PSRAD mm,mm/m64 PSRAW mm,imm8 PSRAD mm,imm8 | 成組數據的算術右移: 將MMX寄存器中的字(雙字)數據按MMX寄存器/內存單元指定的個數右移,移動中保持符號位. 將MMX寄存器中的字(雙字)數據按8位立即數指定的個數右移,移動中保持符號位. | |||||||||||||||||||||||||
| PSRLW mm,mm/m64 PSRLD mm,mm/m64 PSRLQ mm,mm/m64 PSRLW mm,imm8 PSRLD mm,imm8 PSRLQ mm,imm8 | 成組數據的邏輯右移: 將MMX寄存器中的字(雙字)數據按MMX寄存器/內存單元指定的個數右移,移出位用0填充. 將MMX寄存器中的字(雙字)數據按8位立即數指定的個數右移,移出位用0填充. | |||||||||||||||||||||||||
| PSUBB mm,mm/m64 PSUBW mm,mm/m64 PSUBD mm,mm/m64 | 環繞方式成組數據相減: 從MMX寄存器中按字節(字,雙字)減去MMX寄存器/內存單元中的字節(字,雙字)組.(注1) | |||||||||||||||||||||||||
| PSUBSB mm,mm/m64 | 飽和方式有符號成組數據相減: 從MMX寄存器中的有符號成組字節(字)組數據減去MMX寄存器/內存單元中的有符號字節(字)組數據.(注1) | |||||||||||||||||||||||||
| PSUBUSB mm,mm/m64 PSUBUSW mm,mm/m64 | 飽和方式有符號成組數據相減: 從MMX寄存器中的無符號成組字節(字)組數據減去MMX寄存器/內存單元中的無符號字節(字)組數據.(注1) | |||||||||||||||||||||||||
| PUNPCKHBW mm,mm/m64 PUNPCKHWD mm,mm/m64 PUNPCKHDQ mm,mm/m64 | 高位成組數據分解: 此指令交替取出源操作數和目標操作數的數據元素的高半部分,寫入目標操作數中,數據元素的低半部分被忽略. eg:PUNPCKHBW mm,mm/m64 | |||||||||||||||||||||||||
| PUNPCKLBW mm,mm/m64 PUNPCKLWD mm,mm/m64 PUNPCKLDQ mm,mm/m64 | 低位成組數據分解: 此指令交替取出源操作數和目標操作數的數據元素的低半部分,寫入目標操作數中,數據元素的高半部分被忽略.(參考上一條) | |||||||||||||||||||||||||
| PXOR mm,mm/m64 | 逐位邏輯異或: 將MMX寄存器/內存單元中的64位數據進行異或操作,結果存于MMX寄存器中. | |||||||||||||||||||||||||
總結
 
                            
                        - 上一篇: MMX、SSE、AVX等SIMD指令集说
- 下一篇: 英特尔的指令集体系结构_INTEL 体系
