MOVSHDUP - 移動壓縮單精度浮點值高位並複製

 

指令

說明

 

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:移動壓縮單精度浮點值高位並複製(續)

實地址模式異常

中斷 13 - 如果運算元的任何部分出現在從 0 到 0FFFFH 的有效地址空間之外。
#NM - 如果 CR0 中的 TS 設定為 1。
#UD - 如果 CR0.EM = 1。 如果 CR4.OSFXSR(bit 9) = 0。 如果 CPUID.PNI(ECX bit 0) = 0。

虛 8086 模式異常

中斷 13 - 如果運算元的任何部分出現在從 0 到 0FFFFH 的有效地址空間之外。
#NM - 如果 CR0 中的 TS 設定為 1。
#UD - 如果 CR0.EM = 1。如果 CR4.OSFXSR(bit 9) = 0。如果 CPUID.PNI(ECX bit 0) = 0。#PF(錯誤程式碼) - 頁錯誤。