c - 浮点乘法给出 -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。有谁知道我的内联汇编有什么问题?
我只想将一个常量加载到一个寄存器中并将其乘以几次。出于充分的理由,我必须使用内联汇编并且不能使用普通代码。
解决方案
推荐阅读
- php - 从长文本中提取电子邮件(PHP)
- amazon-web-services - 无法创建从时间点快照提供新实例的 CoudFormation RDS 模板
- regex - 谷歌表格上的正则表达式
- android - 在使用 Detox 运行测试期间,Android 模拟器无法启动应用程序
- node.js - 反应路由器是否覆盖 app.get('/ping' 的 URL 路由?
- php - PHP 在多查询中从 db 中检索数据并打印 json
- java - 将 Future 转换为 Mono
- c++ - 在方法的参数化构造函数中调用参数 - C++
- php - 无法使用 ZipArchive 将文件保存在 ZIP 中
- c# - 错误 java.lang.IllegalArgumentException:已添加:Lokio/AsyncTimeout