根据这个reference ,我可以通过执行以下操作来比较 xmm1 和 xmm2 是否相等:
cmpss xmm2, xmm1, 0
但是,似乎没有设置零标志。相反,结果存储在 xmm2 中。如果像 je
或 jz
这样的指令依赖于零标志,我如何根据它们是否相等进行跳转?
最佳答案
cmpss
及其 friend 更多的是为您提供可以进行无分支计算的掩码,您可以将其提取到 GPR,然后对其进行测试等等,但这都有点冗长并且不必要的。
如果你想分支,ucommiss
(或comis
,取决于你想用 NaN 做什么)是更合适的。也许是这样的:
ucomiss xmm2, xmm1
jp unordered
jz equal
关于assembly - 如何根据 cmpss 输出(浮点比较)进行跳转?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30533606/