|
指令 |
說明 |
|
MOVSHDUP xmm1, xmm2/m128 |
將 XMM2/Mem 中代表壓縮 SP 數據元素的 128 位移到 XMM1 暫存器,並複製高位部分。 |
線性地址對應于引用的記憶體數據的最低有效位元組。指出記憶體地址時,將載入記憶體位置 m128 處 16 個位元組的數據,並複製位置 1 與 3 處的單精度元素。使用暫存器-暫存器形式的此操作時,將執行相同的操作,但數據來自 128 位源暫存器。
if (source == m128) {
// load instruction
xmm1[31-0] = m128[63-32];
xmm1[63-32] = m128[63-32];
xmm1[95-64] = m128[127-96];
xmm1[127-96] = m128[127-96];
}
else {
// move instruction
xmm1[31-0] = xmm2[63-32];
xmm1[63-32] = xmm2[63-32];
xmm1[95-64] = xmm2[127-96];
xmm1[127-96] = xmm2[127-96];
}
如果未對齊 16 位元組邊界,則產生一般保護性異常,無論段如何。
無
#GP(0) - CS、DS、ES、FS 或 GS 段中的記憶體運算元有效地址非法。
#SS(0) - SS 段中的地址非法。
#PF(錯誤程式碼) - 頁錯誤。
#NM - 如果 CR0 中的 TS 設定為 1。
#UD - 如果 CR0.EM = 1。如果 CR4.OSFXSR(bit 9) = 0。如果 CPUID.PNI(ECX bit 0) = 0。MOVSHDUP:移動壓縮單精度浮點值高位並複製(續)