看着SSE运营商
CMPORDPS - ordered compare packed singles
CMPUNORDPS - unordered compare packed singles
Run Code Online (Sandbox Code Playgroud)
有序和无序是什么意思?我在x86指令集中寻找等效指令,它似乎只有无序(FUCOM).
英特尔指令参考中提供了以下文档以供参考COMISD:
在操作数1(第一个操作数)的低四字比较双精度浮点值和操作数2(第二个操作数),并设定了
ZF,PF和CF在EFLAGS标志寄存器根据结果(无序,大于,小于大于或等于)。
的CF的标志点是不是真的在这里清除,因为它关系到算术运算的无符号整数。相反,文档关注的是按定义签名的浮点。我进行了一些实验,例如
mov rax, 0x123
movq xmm0, rax
mov rax, 0x124
movq xmm1, rax
ucomisd xmm0, xmm1 ;CF is set here like if
;we would compare uints 0x123 and 0x124
Run Code Online (Sandbox Code Playgroud)
因此,当将操作数设置为双精度浮点时,该指令会将操作数设置为进位标志时,会将操作数视为无符号整数?
在我看来,这有点奇怪。