我尝试计算双精度浮点值的反正切,该值保存在 xmm 寄存器中。对于正常的浮点,可以使用旧的 x87 指令 FPATAN,但是如何使用 double 来做到这一点?
我根据主题有问题.
在xmm0寄存器中,我有一个值,例如-512.000000
和xmm4 : 0.000000
.
我尝试将第一个值与零进行比较,但我无法实现这一点.
comisd xmm0, xmm4
Run Code Online (Sandbox Code Playgroud)
COMISD
指令以奇怪的方式设置标志,并且只有jnz
在我的代码中正常工作之后.
我怎么做这个比较?
正如标题所说.我这样做的方法:
; eax holds 32bit integer
sal rax, 32
sar rax, 32
;after operation int is converted (rax holds the same value on 64 bits)
Run Code Online (Sandbox Code Playgroud)
有没有更优雅/更好/更快的方式来做到这一点?
我怎样才能做到这一点?如果结果将在e*x寄存器中,那将是最好的.