Golang源码中xmm0寄存器
生活随笔
收集整理的這篇文章主要介紹了
Golang源码中xmm0寄存器
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
在閱讀Golang源碼時,經常看到下面一段匯編代碼,如下:
0x00000000004310c8 <+24>: xorps %xmm0,%xmm00x00000000004310cb <+27>: movups %xmm0,0x8(%rsp)0x00000000004310d0 <+32>: movups %xmm0,0x18(%rsp)0x00000000004310d5 <+37>: movups %xmm0,0x28(%rsp)xmm0是128位寄存器,一般用于浮點數運算,但程序中沒有看到任何浮點數變量,那這段代碼是什么意思?
其實很簡單,就是將內存置0。如上面這段代碼,是將0x8(%rsp)到0x38(%rsp)之間的內存置0。為什么要這樣置0?因為用的指令更少,xmm0是128位寄存器,每個指令可以清空16byte大小的內存,而如果用MOVQ AX, 0x8指令,一次只能清空8byte,需要花兩倍指令才能達到相同目的。
xorps異或指令,異或同一個變量結果一定為0,通過xorps %xmm0,%xmm0就是將xmm0寄存器置0。
總結
以上是生活随笔為你收集整理的Golang源码中xmm0寄存器的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: VLAN应用篇系列:(1)华为 H3C交
- 下一篇: 读《一个人的朝圣》| 沾染上称为信仰的东