如何根据 cmpss 输出进行跳转(浮点比较)?
How to do a jump based on cmpss output (floating-point compare)?
根据这个reference,我可以通过执行以下操作来比较 xmm1 和 xmm2 是否相等:
cmpss xmm2, xmm1, 0
不过,好像没有设置零标志。相反,结果存储在 xmm2 中。如果 je
或 jz
之类的指令依赖于零标志,我该如何根据它们是否相等进行跳转?
cmpss
和它的朋友更多的是给你掩码,你可以用它做无分支计算,你可以把它提取到 GPR 然后测试它等等,但这有点冗长和不必要.
如果你想分支,ucomiss
(或comiss
,取决于你想用 NaN 做什么)更合适。可能是这样的:
ucomiss xmm2, xmm1
jp unordered
jz equal
根据这个reference,我可以通过执行以下操作来比较 xmm1 和 xmm2 是否相等:
cmpss xmm2, xmm1, 0
不过,好像没有设置零标志。相反,结果存储在 xmm2 中。如果 je
或 jz
之类的指令依赖于零标志,我该如何根据它们是否相等进行跳转?
cmpss
和它的朋友更多的是给你掩码,你可以用它做无分支计算,你可以把它提取到 GPR 然后测试它等等,但这有点冗长和不必要.
如果你想分支,ucomiss
(或comiss
,取决于你想用 NaN 做什么)更合适。可能是这样的:
ucomiss xmm2, xmm1
jp unordered
jz equal