答案 0 :(得分:2)
您可以使用SSSE3命令PSHUFB
这样(MASM 32位程序集)来完成此操作
.data
align 16
mask db 0,0,0,0, 4,4,4,4, 8,8,8,8, 12,12,12,12
.code
; value in XMM0 ; 15 14 13 12 11 10 09 08 07 06 05 04 03 02 01 00
pshufb xmm0, xmmword ptr [mask] ; 12 12 12 12 08 08 08 08 04 04 04 04 00 00 00 00
输出似乎与掩码匹配是偶然的。
我目前无法测试,掩码字节的顺序可能相反。但是你应该明白这个主意。
无论如何:请注意对齐,因为
当源操作数是128位内存操作数时,该操作数必须在16字节边界上对齐,否则将生成通用保护异常(#GP)。