Intel體系MMX指令

2021-04-15 10:20:49 字數 2996 閱讀 1586

emms

( mmx狀態置空 ) 

將fp特徵字置空(全1),使後續浮點指令可以使用浮點暫存器,其他mmx指令自動置fp為全0.本指令應在所有mmx例程結束和呼叫可含有fp指令的例程時使用,以清除mmx狀態. 

movd r/m32,mm( 轉移32位資料 )

將32位資料從整型暫存器/記憶體移到mmx暫存器,和反向移動.movd不能在mmx暫存器之間,記憶體之間及整型暫存器之間移動資料.目標運算元為mmx暫存器時,32位源運算元寫入目標暫存器的低32位.目標暫存器"0擴充套件"為64位.源運算元為mmx暫存器時,該暫存器的低32位被寫入目標運算元. 

movq r.m64,mm ( 轉移64位資料 )

將64位資料從整型暫存器/記憶體移到mmx暫存器,和反向移動.目標運算元和源運算元可為mmx暫存器,64位記憶體運算元.但movq不能在記憶體和記憶體之間進行資料轉移. 

將mmx暫存器和mmx暫存器/記憶體單元中的有符號字組變成mmx暫存器的有符號位元組組.和將mmx暫存器和mmx暫存器/記憶體單元中的有符號雙字組變成mmx暫存器的有符號字組.(注1) 

將mmx暫存器和mmx暫存器/記憶體單元中的有符號字組變成mmx暫存器的無符號位元組組.(注1) 

按環繞方式將mmx暫存器/記憶體單元中的位元組組(字組,雙字組)相加到mmx暫存器中(注1) 

按飽和方式將mmx暫存器/記憶體單元中的有符號位元組組(字組)相加到mmx暫存器中的有符號位元組組(字組)資料.(注1) 

按飽和方式將mmx暫存器/記憶體單元中的無符號位元組組(字組)相加到mmx暫存器中的無符號位元組組(字組)資料.(注1) 

將mmx暫存器/記憶體單元中的64位資料進行與操作,結果存於mmx暫存器中. 

將mmx暫存器中的64位值取反,再將取反後的mmx暫存器與mmx暫存器/記憶體單元中的64位資料進行與操作,結果存於mmx暫存器中. 

將mmx暫存器與mmx暫存器/記憶體單元中的位元組組(字組,雙字組)資料進行相等比較.

該指令將目標運算元和源運算元的相應資料元素進行比較,相等則目標暫存器的對應資料元素被置為全1,否則置為全0.

eg:pcmpeqe mm,mm/m64

mm ? ? 00000000000000111 0111000111000111 

mm/m64 ? ? 11111110000001100 0111000111000111 

結果mm ? ? 00000000000000000 1111111111111111 

將mmx暫存器與mmx暫存器/記憶體單元中的位元組組(字組,雙字組)資料進行大於比較.

該指令將目標運算元和源運算元的相應資料元素進行比較,大於則目標暫存器的對應資料元素被置為全1,否則置為全0.(參考上一條) 

pmaddwd mm,mm/m64 ( 資料組(字組)的乘加 )

將mmx暫存器與mmx暫存器/記憶體單元中的字組資料相乘,然後將32位結果逐對相加並作為雙字存於mmx暫存器中.

eg:pmaddwd mm,mm/m64

mm ? ? 0111000111000111 0111000111000111 

操作 * * * * 

mm,mm/m64 ? ? 1000000000000000 0000010000000000 

操作 /_____+____/ /______+_____/ 

mm ? ? 1100100011100011 1001110000000000 

將mmx暫存器與mmx暫存器/記憶體單元中的有符號字組資料相乘,然後將結果的高16位存入mmx暫存器.

eg:pmulhw mm,mm/m64

mm ? ? 0111000111000111 0111000111000111 

操作 * * * * 

mm/m64 ? ? 1000000000000000 0000010000000000 

操作 high order high order high order high order 

mm ? ? 1100011100011100 0000000111000111 

將mmx暫存器與mmx暫存器/記憶體單元中的有符號字組資料相乘,然後將結果的低16位存入mmx暫存器.(參考上一條) 

將mmx暫存器/記憶體單元中的64位資料進行或操作,結果存於mmx暫存器中. 

將mmx暫存器中的字(雙字,四字)資料按mmx暫存器/記憶體單元指定的個數左移,低位移入0.

將mmx暫存器中的字(雙字,四字)資料按8位立即數指定的個數左移,低位移入0. 

將mmx暫存器中的字(雙字)資料按mmx暫存器/記憶體單元指定的個數右移,移動中保持符號位.

將mmx暫存器中的字(雙字)資料按8位立即數指定的個數右移,移動中保持符號位. 

將mmx暫存器中的字(雙字)資料按mmx暫存器/記憶體單元指定的個數右移,移出位用0填充.

將mmx暫存器中的字(雙字)資料按8位立即數指定的個數右移,移出位用0填充. 

psubd mm,mm/m64( 環繞方式成組資料相減 )

從mmx暫存器中按位元組(字,雙字)減去mmx暫存器/記憶體單元中的位元組(字,雙字)組.(注1) 

從mmx暫存器中的有符號成組位元組(字)組資料減去mmx暫存器/記憶體單元中的有符號位元組(字)組資料.(注1) 

psubusw mm,mm/m64 ( 飽和方式無符號成組資料相減 )

從mmx暫存器中的無符號成組位元組(字)組資料減去mmx暫存器/記憶體單元中的無符號位元組(字)組資料.(注1) 

punpckhdq mm,mm/m64(高位成組資料分解)

此指令交替取出源運算元和目標運算元的資料元素的高半部分,寫入目標運算元中,資料元素的低半部分被忽略.

eg:punpckhbw mm,mm/m64

punpckldq mm,mm/m64(低位成組資料分解)

此指令交替取出源運算元和目標運算元的資料元素的低半部分,寫入目標運算元中,資料元素的高半部分被忽略.(參考上一條) 

pxor mm,mm/m64(逐位邏輯異或)

將mmx暫存器/記憶體單元中的64位資料進行異或操作,結果存於mmx暫存器中. 

MMX指令集(詳解)

emms mmx狀態置空 將fp特徵字置空 全1 使後續浮點指令可以使用浮點暫存器,其他mmx指令自動置fp為全0.本指令應在所有mmx例程結束和呼叫可含有fp指令的例程時使用,以清除mmx狀態.movd mm,r m32 movd r m32,mm 轉移32位資料 將32位資料從整型暫存器 記憶體...

intel 指令格式

總結下一下免得白白被 intel manual 降低了視力。下面說的是32位的intel cpu。intel指令的格式就是intel機器碼的格式,跟彙編的語法格式不是一回事。每條intel指令由六部分組成,如圖 英語不好,就不直接翻譯。1.指令字首 2.操作碼 3.mor r m 4.sib 5.d...

Intel體系結構

計算機兩大體系統結構 馮諾依曼結構和哈佛結構 作業系統作用 1,對使用者提供介面 api介面和終端介面 shell或gui 2,管理計算器各種資源 程序管理,記憶體管理,檔案管理,io裝置管理等 intel的體系結構 特權級 目標是實現保護,有0 3四個特權級 規範 低特權級任務不能呼叫高特權程式,...