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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

MMX 指令

發布時間:2023/12/3 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MMX 指令 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
MMX指令集
(1)MMX數據傳輸指令
movd復制MMX寄存器中的低位雙字到一個通用寄存器或內存中,也可以把通用寄存器或內存中的數據復制到MMX寄存器的低位雙字中
movq把一個MMX寄存器的內容復制到另一個MMX寄存器中,這個指令也能被用來把一個內存區域中的內容復制到一個MMX寄存器中,或者把MMX寄存器中的內容復制到內存中
(2)MXX算術運算指令
paddb paddw使用指定的操作數進行組合整型加法
paddd paddq使用指定的操作數進行組合整型加法
paddsb paddsw用飽和運算對有符號組合整型進行加法計算
paddusb paddusw用飽和運算對無符號組合整型進行加法計算
psubb psubw使用指定的操作數進行組合整型減法,源操作數存放減數,目標操作數存放被減數
psubd psubq使用指定的操作數進行組合整型減法,源操作數存放減數,目標操作數存放被減數
psubsb psubsw用飽和運算對有符號組合整型進行減法計算,源操作數存放減數,目標操作數存放被減數
psubusb psubusw用飽和運算對無符號組合整型進行減法計算,源操作數存放減數,目標操作數存放被減數
pmaddwd對有符號組合整型進行乘法,然后對結果中相鄰的數據元素進行有符號的整型加法,這個指令可以用來進行整型的點乘運算
pmaddubsw進行一個組合整型乘法,其中源操作數中存放有符號的字節,目標操作數中存放無符號的字節,然后對產生的有符號單字值進行飽和運算相加,最后將結果存放在目標操作數中
pmuludq將源操作數中的低位雙字與目標操作數的低位雙字相乘,產生的四字結果存放在目標操作數中
pmullw使用單字進行有符號組合整型乘法,然后將每個雙字的乘積中的低位單字存放在目標操作數中
pmulhw使用單字進行有符號組合整型乘法,然后將每個雙字的乘積中的高位單字存放在目標操作數中
pmulhuw使用單字進行無符號組合整型乘法,然后將每個雙字的乘積中的高位單字存放在目標操作數中
pmulhrsw使用單字值進行無符號組合整型乘法,然后將雙字的乘積舍入到18位,在縮放到16位,最后存放在目標操作數
pavgb pavgw對指定操作數中無符號整型數據計算組合平均值
pmaxub對兩組無符號單字節組合整型數據進行比較,保存每個比較重較大的單字節數值
pminub對兩組無符號單字節組合整型數據進行比較,保存每個比較重較小的單字節數值
pmaxsw對兩組有符號單字節組合整型數據進行比較,保存每個比較重較大的單字節數值
pminsw對兩組有符號單字節組合整型數據進行比較,保存每個比較重較小的單字節數值
psignb psignw psignd根據源操作數中對應數據元素的符號,對目標操作數中的每個有符號整型數據進行取負,取零或保存不變的操作
pabsb pabsw pabsd計算每組組合數據元素中的絕對值
phaddw phaddd對源操作數和目標操作數中的相鄰的數據元素進行整型加法操作
phaddsw利用飽和運算,對源操作數和目標操作數中相鄰的數據元素進行有符號的整型加法操作,結果存放在目標操作數中
phsubw phsubd對源操作數和目標操作數中相鄰的數據元素進行整型減法操作
phsubsw利用飽和運算,對源操作數和目標操作數中相鄰的數據元素進行有符號的整型減法操作,結果存放目標操作數中
(3)MMX比較指令
pcmpeqb pcmpeqw pcmpeqd逐個元素比較來個組合整型操作數是否相等,如果源操作數和目標操作數中的數據元素相等,則對應的目標操作數中的數據元素被設置為全1;如果不相等,則目標操作數中的數據元素被設置為全0
pcmpgtb pcmpgtw pcmpgtd逐個元素比較來個組合整型操作數的大小,如果目標操作數中的數據元素較大,則對應的目標操作數中的數據元素被設置為全1;否則目標操作數中的數據元素被設置為全0
packsswb packssdw使用有符號的飽和運算,將源操作數和目標操作數中的組合整型單字或雙字轉換為組合整型字節或單字
packuswb使用無符號的飽和運算,將源操作數和目標操作數中的組合整型單字轉換為組合整型字節
(4)MMX邏輯和位移指令
pand對指定的源操作數和目標操作數進行按位邏輯與操作
pandn對指定的源操作數和反轉的目標操作數進行按位的邏輯與操作
por對指定的源操作數和目標操作數進行按位的邏輯或操作
pxor對指定的源操作數和目標操作數進行按位的邏輯異或操作
psllw pslld psllq對目標操作數中的每個元素進行邏輯左移操作,低位用0補進。源操作數中存放需要左移的位數,可以是內存地址,MMX寄存器或者是立即數
psrlw psrld psrlq對目標操作數中的每個元素進行邏輯右移操作,高位用0補進。源操作數中存放需要右移的位數,可以是內存地址,MMX寄存器或者是立即數
psraw psrad對目標操作數中的每個元素進行算術右移操作,高位用符號位補進。源操作數中存放需要右移的位數,可以是內存地址,MMX寄存器或者是立即數
palignr將目標操作數和源操作數組成一個臨時數值,然后按照立即操作數指定的計數對這個臨時數值進行按字節右移操作。將臨時數值最右邊的四字存入目標操作數
(5)MMX解租和重排指令
punpckhbw punpckhbd punpckhbq解租并交織源操作數和目標操作數中的高位數據元素。這些指令可以用于把字節轉換字,字轉換為雙字以及雙字轉換為四字
punpcklbw punpcklbd punpcklbq解租并交織源操作數和目標操作數中的低位數據元素。這些指令可以用于把字節轉換字,字轉換為雙字以及雙字轉換為四字
pshufb源操作數指定一個控制掩碼,根據這個掩碼對目標操作數中的字節進行重排操作。這個指令用于對組合操作數的字節進行重新排列
pshufw立即操作數指定一個掩碼,根據這個掩碼對目標操作數中的字進行重排操作。這個指令用于對組合操作數的字進行重新排列
(6)MMX插入和提取指令
pinstrw復制通用寄存器中的低位單字,將其插入一個MMX寄存器中,插入的位置由立即操作數指定
pextrw從MMX寄存器中提取一個單字,將其復制到一個通用寄存器的低位單字中,提取的位置由立即操作數指定
(7)MMX狀態和緩存控制指令
emms通過重置FPU標簽字來清除MMX的狀態信息,用以標識所有的FPU寄存器都已經被清空,這指令在每次從MMX指令到FPU指令轉換之前必須執行
movntq使用非臨時提示將MMX寄存器中的內容復制到內存中
maskmovq使用非臨時提示有條件地將MMX寄存器中的某些字節復制到內存中,另一個MMX寄存器存放一個掩碼值,用于指定那些字節需要被復制。EDI寄存器指向目標的內存位置

總結

以上是生活随笔為你收集整理的MMX 指令的全部內容,希望文章能夠幫你解決所遇到的問題。

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