delphi - "Pentium-safe FDIV"...2014 年?

标签 delphi compiler-construction cpu

每次查看编译器设置时,我都会想到同样的问题:为什么当前的 Delphi 编译器仍然具有“Pentium-safe FDIV”编译器选项?

Pentium-FDIV-Bug 于 1994 年 11 月被发现,并没有出现在 1995 年的 CPU 型号中。此时的处理器可能只能在 Windows 95、98 甚至 Me 上运行。据我所知,第一个 133 MHz 的 Intel Pentium 1 CPU(因此速度足以达到 Windows 2000 的最低系统要求)于 1995 年 6 月发布,当然没有 FDIV bug。

当前 Delphi 版本的 VCL/RTL 使用了古代操作系统中不可用的 Windows API。 Windows 98 和 Me 不能使用空的 Delphi XE6 VCL 应用程序;我没有检查Delphi XE6的VCL/RTL是否已经破坏了Windows 2000兼容性,但我认为是的。

那么,为什么 Embarcadero 保留了 1994 年使用的编译器开关,而放弃了对 2000 年使用的操作系统的支持?因此,没有人会需要此编译选项,因为受影响的 CPU 无论如何都不会与 VCL/RTL 所需的操作系统兼容。

更新;为了澄清这个问题:这个开关是否有任何有用的用例?或者编译器可能在内部忽略该选项,它只是为了保留旧项目文件的选项?

最佳答案

奔腾除法错误影响了许多早期的奔腾型号。受影响型号的最高时钟速度为 100MHz。官方文档表明Delphi XE6针对Vista及更高版本,但实际上仍然可以针对Windows XP,并且我相信XE6可以制作在Windows 2000上运行的可执行文件。XP的最低要求是233MHz处理器, Windows 2000 133MHz 处理器。

因此,您可以在有缺陷的奔腾处理器上运行 XE6 编译的代码,这似乎是合理的。事实上,至少在过去 15 年里,Embarcadero 没有人觉得有义务支持有缺陷的奔腾处理器。 21 世纪根本就没有在野外见过它们。

那么,为什么编译器功能没有被删除呢?只有内河码头知道答案,但我可以给出一些明显的原因:

  1. 删除该功能会影响向后兼容性。如果有人在启用开关的情况下构建,即使他们不需要,那么删除它也会影响他们。
  2. 消除功能成本。这样做涉及到对 UI、编译器、文档、测试套件等的更改。
  3. 删除该功能会带来风险。每当您更改代码(经过多年尝试和测试的代码)时,您都会面临引入新缺陷的风险。

关于delphi - "Pentium-safe FDIV"...2014 年?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24101125/

相关文章:

macos - 德尔福 Mac OS X

linux - 当我的 cpu 被标记为 "system cpu"时,它在做什么?

cpu - 在哪里可以找到CPU的 throttle 温度和关机温度?

linux - 从 proc 转储 CPU 寄存器

Delphi - 如何找到重复出现的 "ghost"托盘气球弹出窗口的来源?

delphi - 如何等待异步 CopyHere(Shell API 命令)完成 ZIP 压缩?

delphi - 获取 Delphi (DirectX) 中所有显示器的当前/ native 屏幕分辨率

c# - 当我对引用类型和值类型执行转换时到底发生了什么

java - Java 运算符重载插件

c - 哪些参数决定处理器数据类型的大小?