我有以下代码:
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。有人知道我的内联汇编有什么问题吗?
我只想将一个常量加载到寄存器中并乘以几次。出于充分的理由,我必须使用内联汇编,而不能使用常规代码。