有没有一种方法可以用xor翻转32位浮点数的符号位?

时间:2019-07-11 15:37:54

标签: assembly x86 simd

我试图翻转xmm0内最低有效浮点数的符号位。我试图将-0转换为另一个xmm寄存器,并将其与xmm0进行异或。不幸的是,尽管我的流通量价值消失了,但我已经实现了反转标志。有没有一种方法可以在asm中使用xorps来翻转符号位?我也看到了stackoverflow上的一些帖子,但确实在c中。

# xmm0 contains 4 floats
# goal is to flip the sign of the least significant one
mov eax, -0
cvtsi2ss xmm1, eax
xorps    xmm0, xmm1

1 个答案:

答案 0 :(得分:2)

要翻转xmm0内最低有效浮点数的符号位,解决方案应类似于杰斯特在我的问题的评论部分中张贴的内容:

mov eax, 0x80000000
movd xmm1, eax
xorps xmm0, xmm1

(感谢Jester和其他所有帮助过我的人。我只是想将此话题标记为已完成)