SSE2指令集系列之一----浮點運算指令

SSE2與SSE1使用相同寄存器厦章,指令描述約定:

MM指64位MMX寄存器

XMM指128XMM寄存器

m32 指32位內(nèi)存變量

m128指128位內(nèi)存變量

本小結主要描述雙精度浮點運算指令

1. ?數(shù)據(jù)搬移指令

??? ? ??movapd?XMM,XMM/m128

? ? ? ??movapd?XMM/m128,XMM

? ? ? ??把源存儲器內(nèi)容值送入目的寄存器,當有m128時,內(nèi)存變量地址必須16字節(jié)對齊.

? ? ? ??movupd?XMM,XMM/m128?

? ? ? ??movupd?XMM/m128,XMM

? ? ? ??把源存儲器內(nèi)容值送入目的寄存器,內(nèi)存變量地址不必對齊16字節(jié).

? ? ? ??兩條指令同SSE1的浮點搬移指令movaps 和 movups 指令類似

? ? ? ??movlpd?XMM,m64?

? ? ? ??movlpd?m64,XMM

? ? ???把源存儲器64位內(nèi)容送入目的寄存器低64位,高64位不變,內(nèi)存變量地址不必對齊16字節(jié).

? ? ? ??movhpd?XMM,m64?

? ? ? ??movhpd?m64,XMM

? ? ? ??把源存儲器64位內(nèi)容送入目的寄存器高64位,低64位不變,內(nèi)存變量地址不必對齊16字節(jié).

2. ? ?浮點常用算數(shù)運算指令

? ? ? ??addpd?XMM,XMM/m128? ? ?? ?

? ? ? ??addsd?XMM,XMM/m128

? ? ? ??subpd?XMM,XMM/m128? ? ?

? ? ? ??subsd?XMM,XMM/m128

? ? ? ??mulpd?XMM,XMM/m128??? ? ? ??

? ? ? ??mulsd?XMM,XMM/m128? ??

? ? ? ??divpd?XMM,XMM/m128? ? ? ??

? ? ? ??divsd?XMM,XMM/m128

? ? ? ??sqrtpd?XMM,XMM/m128? ? ? ?

? ? ? ??sqrtsd?XMM,XMM/m128

? ? ? ??maxpd?XMM,XMM/m128? ? ?

? ? ? ??maxsd?XMM,XMM/m128

? ? ? ??minpd?XMM,XMM/m128

? ? ? ??minsd?XMM,XMM/m128

?小結:?

? ?? 1. 以pd結尾的指令對兩個雙精度浮點數(shù)執(zhí)行相同的運算

? ? ? 2. 以sd結尾的指令只對低64位雙精度執(zhí)行運算,高64位保持不變兜材。

? ? ? 3. 當有m128存儲器是要求內(nèi)存地址必須為16字節(jié)對齊躯保。


?3. 位運算指令

  andpd?XMM,XMM/m128

  源存儲器128個二進制位'與'目的寄存器128個二進制位,結果送入目的寄存器,內(nèi)存變量地址必須對齊16字節(jié)邊界.

  andnpd?XMM,XMM/m128

  目的寄存器128個二進制位先取'非',再'與'源存儲器128個二進制位,結果送入目的寄存器,內(nèi)存變量地址必須對齊16字節(jié)邊界

  orpd?XMM,XMM/m128

  源存儲器128個二進制位'或'目的寄存器128個二進制位,結果送入目的寄存器,內(nèi)存變量地址必須對齊16字節(jié)邊界

  xorpd?XMM,XMM/m128

  源存儲器128個二進制位'異或'目的寄存器128個二進制位,結果送入目的寄存器,內(nèi)存變量地址必須對齊16字節(jié)邊界

4. 數(shù)據(jù)類型轉換指令

? ? ?4.1?32位浮點與64位浮點之間的轉換

? ? ? ??cvtps2pd?XMM,XMM/m64

? ? ? ? 把源存儲器低64位兩個單精度浮點數(shù)變成兩個雙精度浮點數(shù),結果送入目的寄存器.

? ? ? ??cvtss2sd?XMM,XMM/m32

? ? ? ? 把源存儲器低32位1個單精度浮點數(shù)變成1個雙精度浮點數(shù),結果送入目的寄存器的低64位,高64位不變.

? ? ? ??cvtpd2ps?XMM,XMM/m128

? ? ? ? 把源存儲器兩個雙精度浮點數(shù)變成兩個單精度浮點數(shù),結果送入目的寄存器的低64位,高64位清零,

? ? ? ??cvtsd2ss?XMM,XMM/m64

? ? ? ? 把源存儲器低64位1個雙精度浮點數(shù)變成1個單精度浮點數(shù),結果送入目的寄存器的低32位,高96位不變.

? ? ?4.2 ?浮點數(shù)與32位整數(shù)之間的轉換

? ? ??4.2.1 雙精度與整數(shù)之間轉換

?? ? ???cvtpd2pi?MM,XMM/m128

?? ? ? ?把源存儲器兩個雙精度浮點數(shù)變成兩個雙字有符號整數(shù),結果送入目的寄存器,內(nèi)存變量必須對齊內(nèi)存16字節(jié).

? ? ? ? 如果結果大于所能表示的范圍,那么轉化為80000000h(正數(shù)也轉為此值).

? ? ? ? 當XMM1 = 0x 0dd1a5e1f35aec736 ? 41132a4000000000,執(zhí)行cvtpd2pi MM0,XMM1

? ? ? ? 則 MM0 = 0x 80000000 0004ca90

? ? ? ? 因為0dd1a5e1f35aec736h(雙精度浮點數(shù)) = -3.14E140 超過 80000000h所以變?yōu)?0000000h

? ? ? ? 而41132a4000000000h(雙精度浮點數(shù)) = 3.14E5,所以轉為314000 = 0004ca90h(有符號整數(shù))

   ?cvtpi2pd?XMM,MM/m64

?? ? ? ?把源存儲器兩個雙字有符號整數(shù)變成兩個雙精度浮點數(shù),結果送入目的寄存器.

? ? ? ??cvtpd2dq?XMM,XMM/m128

? ? ? ? 把源存儲器兩個雙精度浮點數(shù)變成兩個雙字有符號整數(shù)

? ? ? ? 結果送入目的寄存器的低64位,高64位清零,內(nèi)存變量必須對齊內(nèi)存16字節(jié).

? ? ? ??此運算與cvtpd2pi類似但目的寄存器變?yōu)閄MM.

? ? ? ??cvtdq2pd?XMM,XMM/m128

? ? ? ? 把源存儲器低64位兩個雙字有符號整數(shù)變成兩個雙精度浮點數(shù),結果送入目的寄存器,內(nèi)存變量必須對齊內(nèi)存16字節(jié).

  ???cvtsd2si?r32,XMM/m64

? ? ? ? ?把源存儲器低64位1個雙精度浮點數(shù)變成1個雙字有符號整數(shù),結果送入目的寄存器.

? ? ? ? ?此指令目的寄存器是32位通用寄存器

   cvtsi2sd?XMM,r32/m32

? ? ? ? 把源存儲器1個雙字有符號整數(shù)變成1個雙精度浮點數(shù),結果送入目的寄存器的低64位,高64位不變.

?4.2.2 單精度浮點與整數(shù)之間轉換

? ? ? ??cvtps2dq?XMM,XMM/m128

? ? ? ? 把源存儲器4個單精度浮點數(shù)變成4個雙字有符號整數(shù),結果送入目的寄存器,內(nèi)存變量必須對齊內(nèi)存16字節(jié).

? ? ? ??cvtdq2ps?XMM,XMM/m128

? ? ? ? 把源存儲器4個雙字有符號整數(shù)變成4個單精度浮點數(shù),結果送入目的寄存器,內(nèi)存變量必須對齊內(nèi)存16字節(jié).

---------------------

作者:celerychen2009

來源:CSDN

原文:https://blog.csdn.net/celerychen2009/article/details/8934972

版權聲明:本文為博主原創(chuàng)文章翻斟,轉載請附上博文鏈接匿垄!

?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末嚣州,一起剝皮案震驚了整個濱河市亿乳,隨后出現(xiàn)的幾起案子硝拧,更是在濱河造成了極大的恐慌,老刑警劉巖葛假,帶你破解...
    沈念sama閱讀 217,734評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件障陶,死亡現(xiàn)場離奇詭異,居然都是意外死亡聊训,警方通過查閱死者的電腦和手機抱究,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,931評論 3 394
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來带斑,“玉大人鼓寺,你說我怎么就攤上這事⊙模” “怎么了妈候?”我有些...
    開封第一講書人閱讀 164,133評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長挂滓。 經(jīng)常有香客問我苦银,道長,這世上最難降的妖魔是什么赶站? 我笑而不...
    開封第一講書人閱讀 58,532評論 1 293
  • 正文 為了忘掉前任幔虏,我火速辦了婚禮,結果婚禮上贝椿,老公的妹妹穿的比我還像新娘想括。我一直安慰自己,他們只是感情好烙博,可當我...
    茶點故事閱讀 67,585評論 6 392
  • 文/花漫 我一把揭開白布瑟蜈。 她就那樣靜靜地躺著,像睡著了一般习勤。 火紅的嫁衣襯著肌膚如雪踪栋。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,462評論 1 302
  • 那天图毕,我揣著相機與錄音夷都,去河邊找鬼。 笑死,一個胖子當著我的面吹牛囤官,可吹牛的內(nèi)容都是我干的冬阳。 我是一名探鬼主播,決...
    沈念sama閱讀 40,262評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼党饮,長吁一口氣:“原來是場噩夢啊……” “哼肝陪!你這毒婦竟也來了?” 一聲冷哼從身側響起刑顺,我...
    開封第一講書人閱讀 39,153評論 0 276
  • 序言:老撾萬榮一對情侶失蹤氯窍,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后蹲堂,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體狼讨,經(jīng)...
    沈念sama閱讀 45,587評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,792評論 3 336
  • 正文 我和宋清朗相戀三年柒竞,在試婚紗的時候發(fā)現(xiàn)自己被綠了政供。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,919評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡朽基,死狀恐怖布隔,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情稼虎,我是刑警寧澤衅檀,帶...
    沈念sama閱讀 35,635評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站渡蜻,受9級特大地震影響术吝,放射性物質(zhì)發(fā)生泄漏计济。R本人自食惡果不足惜茸苇,卻給世界環(huán)境...
    茶點故事閱讀 41,237評論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望沦寂。 院中可真熱鬧学密,春花似錦、人聲如沸传藏。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,855評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽毯侦。三九已至哭靖,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間侈离,已是汗流浹背试幽。 一陣腳步聲響...
    開封第一講書人閱讀 32,983評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留卦碾,地道東北人铺坞。 一個月前我還...
    沈念sama閱讀 48,048評論 3 370
  • 正文 我出身青樓起宽,卻偏偏與公主長得像,于是被迫代替她去往敵國和親济榨。 傳聞我的和親對象是個殘疾皇子坯沪,可洞房花燭夜當晚...
    茶點故事閱讀 44,864評論 2 354

推薦閱讀更多精彩內(nèi)容

  • 1.CE修改游戲特例說明 模擬器游戲不能直接修改游戲的程序代碼(即不能直接使用代碼注入的手段修改code段代碼),...
    LazzMan閱讀 10,205評論 0 8
  • 在編程中我們總要進行一些數(shù)學運算以及數(shù)字處理擒滑,尤其是浮點數(shù)的運算和處理腐晾,這篇文章主要介紹C語言下的數(shù)學庫。而其他語...
    歐陽大哥2013閱讀 5,198評論 0 12
  • 在我們的生活與工作中所使用到的計算機都是基于馮諾依曼結構實現(xiàn)的,馮諾依曼結構又稱馮諾依曼模型或普林斯頓結構,它是一...
    SylvanasSun閱讀 2,630評論 1 6
  • 定點小數(shù)運算 來自:http://www.eepw.com.cn/article/17893.htm 在DSP世界...
    郝宇峰閱讀 9,114評論 0 2
  • 不愿睡的凌晨 夜風里 城在呼吸 一緊一松 街燈玩弄黑影 跳動的鬼火 點點光 融了黑魆魆的墻 為了記住醒著 為了忘卻...
    稻香草木中閱讀 139評論 3 0