日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

MMX指令

發布時間:2023/12/3 编程问答 50 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MMX指令 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
EMMSMMX狀態置空:
將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/m64
mm??000000000000001110111000111000111
mm/m64??111111100000011000111000111000111
結果mm??000000000000000001111111111111111

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/m64
mm??01110001110001110111000111000111
操作****
mm,mm/m64??10000000000000000000010000000000
操作/_____+____//______+_____/
mm??11001000111000111001110000000000

PMULHW mm,mm/m64

成組數據(字組)的乘后取高位:
將MMX寄存器與MMX寄存器/內存單元中的有符號字組數據相乘,然后將結果的高16位存入MMX寄存器.
eg:PMULHW mm,mm/m64

mm??01110001110001110111000111000111
操作****
mm/m64??10000000000000000000010000000000
操作High OrderHigh OrderHigh OrderHigh Order
mm??11000111000111000000000111000111

PMULLW mm,mm/m64

成組數據(字組)的乘后取低位:
將MMX寄存器與MMX寄存器/內存單元中的有符號字組數據相乘,然后將結果的低16位存入MMX寄存器.(參考上一條)
POR mm,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指令的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。