首页 > 解决方案 > 有没有办法用 xor 翻转 32 位浮点数的符号位?

问题描述

我正在尝试翻转 xmm0 内最低有效浮点数的符号位。我试图将 -0 转换为另一个 xmm 寄存器并与 xmm0 进行异或。不幸的是,尽管我的浮动值消失了,但我已经实现了翻转标志。有没有办法xorps在 asm 中使用来翻转符号位?我还看到一些关于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

标签: assemblyx86simd

解决方案


要翻转 xmm0 内最不重要的浮点数的符号位,解决方案看起来像 Jester 在我的问题的评论部分中发布的内容:

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

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


推荐阅读