Dan*_*all 6 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错误.
当前Delphi版本的VCL/RTL使用了古代操作系统中没有的Windows API.Windows 98和Me不适用于空的Delphi XE6 VCL应用程序; 我没有检查Delphi XE6的VCL/RTL是否已经破坏了Windows 2000兼容性,但我认为是这样.
那么,为什么Embarcadero保留了1994年使用的编译器开关,当时他们放弃了对2000年使用的操作系统的支持?因此,没有人会需要这个编译选项,因为受影响的CPU无法与VCL/RTL所需的操作系统兼容.
更新 ; 澄清问题:这个开关可能有用吗?或者编译器可能在内部忽略该选项,它只是保留旧项目文件的选项?
Pentium除虫系统影响了许多早期的Pentium型号.受影响模型的最高时钟速度为100MHz.官方文档表明Delphi XE6针对Vista及以上,但实际上仍然可以针对Windows XP,我相信XE6可以生成在Windows 2000上运行的可执行文件.XP的最低要求是233MHz处理器,并且Windows 2000是133MHz处理器.
因此,您可能能够在有缺陷的奔腾处理器上运行XE6编译的代码,这几乎是合理的.实际上,至少过去15年来,Embarcadero的任何人都没有义务支持有缺陷的奔腾处理器.他们根本就没有在21世纪的野外看到过.
那么,为什么没有删除编译器功能呢?只有Embarcadero知道答案,但我可以给出一些明显的理由:
如果你正在寻找一个"官方"的答案,你不可能得到一个.非正式地,我当然可以指出大卫的答案.他关于推理的3分是明确的.除非有令人信服的理由删除该功能,否则它没有太大的业务或技术意义.关于它应被删除的唯一原因是,如果x86后端完全从头开始重写......在这种情况下,它不是被删除,而是首先不考虑它.
我会注意到新的基于AMD64/ia64和LLVM的ARM后端对该指令没有任何作用,因为这些CPU不受影响应该是不言自明的.指令/选项被识别,但仅被忽略.