如何根据 cmpss 输出(浮点比较)进行跳转?

Tho*_*ice 2 x86 assembly

根据此参考,我可以通过执行以下操作来比较 xmm1 和 xmm2 是否相等:

cmpss xmm2, xmm1, 0
Run Code Online (Sandbox Code Playgroud)

但是,似乎没有设置零标志。相反,结果存储在 xmm2 中。如果指令喜欢jejz依赖零标志,我如何根据它们是否相等进行跳转?

har*_*old 5

cmpss 它的朋友更倾向于为您提供可以进行无分支计算的掩码,您可以将其提取到 GPR,然后对其进行测试等等,但这有点冗长且不必要。

如果你想分支,ucomiss(或者comiss,取决于你想用 NaN 做什么)更合适。也许是这样的:

ucomiss xmm2, xmm1
jp unordered
jz equal
Run Code Online (Sandbox Code Playgroud)