我正在使用带有 MSVC 编译器的 Visual Studio。基本上任何其他编译器似乎都支持 x86/x64 CPU 的本机 80 位浮点,除了 MSVC。似乎解决方法是使用内联汇编器,但显然 MSVC 在 64 位模式下也不支持此功能。
是否有可能将我的 CPU 的 80 位浮点功能与 MSCV 结合使用?性能是最高优先级的,因此任何软件解决方案都是不可能的。可移植性不是问题,因为我只会在 Windows x64 机器上使用我的代码。
MSVC 编译器可以使用 80 位浮点数吗?
不幸的是,答案是“不”
从第一天起,我们就被告知,标准类型使用的底层类型,例如
int
、long long int
和long double
,是特定于实现的。我们被警告说,即使在同一编译器的两个版本之间,实现也可能会发生变化。例如,早在 20 世纪 80 年代,微软就将 int
实现为 16 位类型,这是他们应该做的。当时,Intel 的微处理器具有 16 位字长。后来,随着处理器的发展,微软转向了 32 位int
。
今天,不幸的是,微软冻结了它的类型定义。即使硬件支持,微软也不会为我们提供 128 位整数和 80 位浮点数(或更大)。