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

标签 assembly x86

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

cmpss xmm2, xmm1, 0

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

最佳答案

cmpss 及其 friend 更多的是为您提供可以进行无分支计算的掩码,您可以将其提取到 GPR,然后对其进行测试等等,但这都有点冗长并且不必要的。

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

ucomiss xmm2, xmm1
jp unordered
jz equal

关于assembly - 如何根据 cmpss 输出(浮点比较)进行跳转?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30533606/

相关文章:

assembly - 如果我在 x86 AT&T 语法中省略了比例因子和索引寻址模式,会发生什么?

android - 谷歌使用新的 Intel Atom x86 仿真器映射 SDK

c++ - 程序运行周期中代码块Ver.16.01崩溃

assembly - 指令集架构的定义是什么?

assembly - MASM 错误 Unknown relocation type (1) with 16b code

linux - x86 上的堆栈对齐

assembly - 如何在汇编中播种随机数生成器?

windows - Subsystem for Unix Application on Windows 如何在汇编中实现系统调用?

c - 如何在汇编器中访问数组的一个元素

assembly - x86指令中的 ".s"后缀是什么?