首页 > 解决方案 > 浮点乘法给出 -nan 作为结果

问题描述

我有以下代码:

float res = 0.0f;
asm volatile("fld %0\n"
             "fmulp\n"
             "fmulp\n"
             : "&t"(res)
             : "0"(1.2));

然后我打印res以下语句:

printf("%f ", res);

它打印的不是 1.728,而是正确的结果-nan。然而,只有一条fmulp指令,它给出了 1.44。有谁知道我的内联汇编有什么问题?

我只想将一个常量加载到一个寄存器中并将其乘以几次。出于充分的理由,我必须使用内联汇编并且不能使用普通代码。

标签: cassemblyx86-64inline-assembly

解决方案


推荐阅读