VB6.0中的“取消 Pentium(tm) FDIV 安全性检查”

标签: , , ,

最近比尔盖子在用VB6.0编写一个小型程序。在高级编译优化选项中,有一项:“取消 Pentium(tm) FDIV 安全性检查”,这是什么意思呢?在查阅了资料以后,终于明白了,我们就来了解一下吧。

1994年10月,美国弗吉尼亚州Lynchburg College数学系教授Thomas Nicely发现用电脑处理长除法时一直出错。他用一个数字去除以824,633,702,441时,答案一直是错误的。事后才知道,这位教授使用的 60-100MHz P5版本奔腾处理器在浮点运算单元有一个问题,原因是英特尔为了加速运算,将整个乘法表烧录在处理器上面,但是2048个乘法数字中,有5个输入错误。在极少数情况下,会导致除法运算的精确度降低甚至出错。这就是后来臭名昭著的Pentium FDIV bug。

因此,为了避免由于处理器bug导致的运算错误,很多编译器都增加了一个编译选项,可以让程序通过间接运算的方法绕过这个FDIV bug,避免在有 FDIV bug的奔腾处理器上运算错误。但是,由于如今几乎已经不可能有人使用这种老奔腾处理器了,因此可以在VB6.0或其它的编译器中(如果有的话),安全的 “取消 Pentium(tm) FDIV 安全性检查”,可以轻微提高性能,同时不会导致任何异常。

最后送上十几年前的那个笑话:英特尔有新格言了

United We Stand, Divided We Fall.

注:这句话原出自《伊索寓言》,翻译过来即是

合即立,分即跨。

但是Divided在这里是“除法”的意思。于是就有了翻译过来大概是

加法我们对了,除法我们错了。

原文链接:http://biergaizi.info/archives/2012/03/1300.html

赞赏

微信赞赏支付宝赞赏

随机文章:

  1. Asc/AscB/AscW和Chr/ChrB/ChrW函数之间的区别
  2. VBS图片处理之用VBS转化图片格式
  3. 在Windows 2008 R2下安装PSDK
  4. JavaScript的Trim函数有12种写法,你可知道么?
  5. VBS深入CreateObject函数

3 条评论 发表在“VB6.0中的“取消 Pentium(tm) FDIV 安全性检查””上

  1. 比尔盖子说道:

    不遵守 CC 协议也就罢了。然而您确实挂上了 CC 协议声明,却把作者和链接换成自己,可是更恶劣的行为啊 ^_^.

  2. 比尔盖子说道:

    我知道这个版权信息可能是自动生成的,但是转载文章时版权就变成自己这个严重的问题,建议您修改一下末班或直接额外注明在文章中。

  3. 比尔盖子说道:

    仔细看了看,确实有原文链接,但开头的版权声明真明显……

留下回复