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
packssdw mm,mm/m64
有符號飽和方式資料成組:
將mmx暫存器和mmx暫存器/記憶體單元中的有符號字組變成mmx暫存器的有符號位元組組.和將mmx暫存器和mmx暫存器/記憶體單元中的有符號雙字組變成mmx暫存器的有符號字組.
(注1)
packuswb mm,mm/m64
無符號飽和方式資料成組
將mmx暫存器和mmx暫存器/記憶體單元中的有符號字組變成mmx暫存器的無符號位元組組.(注1)
paddb mm,mm/m64
paddw mm,mm/m64
paddd mm,mm/m64
環繞方式資料組相加:
按環繞方式
將mmx暫存器/記憶體單元中的位元組組(字組,雙字組)相加到mmx暫存器中
(注1)
paddsb mm,mm/m64
paddsw mm,mm/m64
飽和方式有符號
資料組相加:
按飽和方式將mmx暫存器/記憶體單元中的有符號位元組組(字組)相加到mmx暫存器中的有符號位元組組(字組)資料.(注1)
paddusb mm,mm/m64
paddusw 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
pcmpeqw mm,mm/m64
pcmpeqd mm,mm/m64
成組資料的相等比較:
將mmx暫存器與mmx暫存器/記憶體單元中的位元組組(字組,雙字組)資料進行相等比較.
該指令將目標運算元和源運算元的相應資料元素進行比較,相等則目標暫存器的對應資料元素被置為全1,否則置為全0.
eg:pcmpeqe mm,mm/m64mm?
?00000000000000111
0111000111000111
mm/m64??
11111110000001100
0111000111000111
結果mm??
00000000000000000
1111111111111111
pcmpgtb mm,mm/m64
pcmpgtw mm,mm/m64
pcmpgtd mm,mm/m64
成組資料的相等比較:
將mmx暫存器與mmx暫存器/記憶體單元中的位元組組(字組,雙字組)資料進行大於比較.
該指令將目標運算元和源運算元的相應資料元素進行比較,大於則目標暫存器的對應資料元素被置為全1,否則置為全0.(參考上一條)
pmaddwd mm,mm/m64
資料組(字組)的乘加:
將mmx暫存器與mmx暫存器/記憶體單元中的字組資料相乘,然後將32位結果逐對相加並作為雙字存於mmx暫存器中.
eg:pmaddwd mm,mm/m64mm?
?0111000111000111
0111000111000111操作*
***mm,mm/m64??
1000000000000000
0000010000000000
操作/_____+____/
/______+_____/mm?
?1100100011100011
1001110000000000
pmulhw mm,mm/m64
成組資料(字組)的乘後取高位:
將mmx暫存器與mmx暫存器/記憶體單元中的有符號字組資料相乘,然後將結果的高16位存入mmx暫存器.
eg:pmulhw mm,mm/m64mm?
?0111000111000111
0111000111000111操作*
***mm/m64??
1000000000000000
0000010000000000
操作high order
high order
high order
high ordermm?
?1100011100011100
0000000111000111
pmullw mm,mm/m64
成組資料(字組)的乘後取低位:
將mmx暫存器與mmx暫存器/記憶體單元中的有符號字組資料相乘,然後將結果的低16位存入mmx暫存器.(參考上一條)
pormm,mm/m64
逐位邏輯或:
將mmx暫存器/記憶體單元中的64位資料進行或操作,結果存於mmx暫存器中.
psllw mm,mm/m64
pslld mm,mm/m64
psllq mm,mm/m64
psllw mm,imm8
pslld mm,imm8
psllq mm,imm8
成組資料的邏輯左移:
將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
psubsw 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指令集的程式設計簡介
基於mmx指令集的程式設計簡介 出處 http www.codeproject.com cpp mmxintro.asp mmx技術簡介 intel 公司的mmx 多 增強指令集 技術可以大大提高應用程式對二維三維圖形和圖象的處理能力。intel mmx技術可用於對大量資料和複雜陣列進行的複雜處理,...
基於MMX指令集的程式設計簡介
mmx技術簡介 intel 公司的mmx 多 增強指令集 技術可以大大提高應用程式對二維三維圖形和圖象的處理能力。intel mmx技術可用於對大量資料和複雜陣列進行的複雜處理,使用mmx技術可處理的資料基本單位可以是位元組 byte 字 word 或者是雙字 double word visual ...
ZT 基於MMX指令集的程式設計簡介
基於mmx指令集的程式設計簡介 mmx技術簡介 intel 公司的mmx 多 增強指令集 技術可以大大提高應用程式對二維三維圖形和圖象的處理能力。intel mmx技術可用於對大量資料和複雜陣列進行的複雜處理,使用mmx技術可處理的資料基本單位可以是位元組 byte 字 word 或者是雙字 dou...