gpt4 book ai didi

c++ - _controlfp 不改变精度

转载 作者:搜寻专家 更新时间:2023-10-31 01:55:37 29 4
gpt4 key购买 nike

下面的代码演示了这一点

#include <float.h>
#include <stdint.h>
#pragma fenv_access(on) // apparently ineffective

int main(int argc, char **argv)
{
uint32_t cw;
cw = _controlfp(0,0); // cw = 0x0008001f
cw = _controlfp(_PC_24,_MCW_PC); // cw = SAME!
cw = _controlfp(_PC_53,_MCW_PC); // cw = STILL THE SAME!

return 0;
}

我需要设置工作精度,因为很多旧的网格生成代码都依赖于它。在迁移到 64 位之前,我加入了 fstcw [cur_cw] 等......一切都很好。但是,由于 vs2010 不支持 64 位目标的内联汇编,看来我唯一可行的解​​决方案是为此目的创建一个单独的 .asm 文件。是否还有另一个神奇的编译器选项,但我不知道它会使 _controlfp 合作?

最佳答案

您确定正在使用旧的 x87 FPU 吗?我希望默认情况下使用 SSE 指令执行所有 float ;在 x86_64 上,没有充分的理由使用 SSE。

关于c++ - _controlfp 不改变精度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8234873/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com