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

时间:2015-05-29 15:35:16

标签: assembly x86

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

cmpss xmm2, xmm1, 0

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

1 个答案:

答案 0 :(得分:3)

cmpss和它的朋友更倾向于给你掩码,你可以做无分支计算,你可以将它提取到GPR然后测试它等等但是这些都有点冗长和不必要的。

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

ucomiss xmm2, xmm1
jp unordered
jz equal