我们应该期待从浮点支持在64位有德尔斐编译器吗?

  • 将64位编译器使用SSE到 实行浮点运算?

  • 将64位编译器支持的 目前的80位浮动的类型 (延长)?

这些问题是密切相关,所以我请他们作为一个单一的问题。

有帮助吗?

解决方案

双=延长下:

读取艾伦*鲍尔的帐户Kylix_rd:

http://twitter.com/kylix_rd

事后看来合乎逻辑的,因为虽然SSE2regs是128位,他们被用作两64位的两倍。

其他提示

我做了两个员额的主题(在这里,还有),总结,是的,64位编译器使用SSE2(双精度),但是它并不使用证(单的精度).一切都转化为双精度浮动和计算使用SSE2(编辑: 但是有一个选项,以控制的)

这意味着f。i。如果数学上的双精彩车是快速的,数学上的单一的精度是缓慢的(很多冗余的转换之间的单一和双精度引发的),"扩展"是化名为"双重",中间计算的精确度是有限的双精度。

编辑: 有无证件(当时)的指令,控制SSE代码生成, {$EXCESSPRECISION关} 激活SSE代码生成的,这带来了表现的期望。

根据马van de Voort在他的回答: 我应该如何准备我的32位有德尔斐项目,为最终64位编译器:

x87FPU是废弃的关64,而一般SSE2将用于florating点。所以浮点及其例外处理可能的工作略有不同,而且延长可能不是80位(但64位,或者不太可能128位)。这还涉及通常的四舍五入(copro controlwork)的变化的时接的室内用C码需要一个不同的fpu字。

潜在危险装置评论了这个问题的答案:

我不会说x87FPU已被否决,但肯定的情况下,微软已经决定要尽自己最好使用那种方式(并且他们真的看起来不像80位FP值),尽管这显然是在技术上可能使用FPU/80位漂浮在Win64.

我只是发表一个回答你其他问题,但我猜,它实际上应该去这里:

显然,没有人除了用于内河码头可以回答这对于确保在产品之前被释放。

这是非常可能的是,任何体面的64编译器将使用SSE2指示设置为一个基准并因此试图做的那么多漂浮点运算使用证的功能成为可能,尽量减少使用x87FPU。然而,还应该说,没有任何技术的原因,防止使用x87FPU在64码应用程序(尽管有谣言相反,它已经存在了一些时间;如果你想要的更多信息在这一点上,请看一看 昂纳雾的呼吁《公约》手册, ,具体章6.1"可以浮点寄存器被使用的64位窗口?").

编辑1:德尔菲XE2Win64事实上不支持80位浮点运算开箱(例如见discussuion 在这里, (虽然它允许一个读写这样的值)。一个可以带来这种能力回德尔菲Win64使用记录+级的经营者,因为工作是在 这TExtendedX87类型 (虽然需要注意的事项)。

我们不会知道如何64位有德尔斐编译将实施浮点运算,直至实际内河码头的船只。任何事情之前这只是猜测。但是,一旦我们知道它将是太晚以至于不能做任何事情。

艾伦*鲍尔的鸣叫做似乎表明,他们将使用SSE2和扩展类型可能会降低到64位,而不是80位。我认为这将是一个糟糕的想法,对于各种原因。我写了我的想法在一个QualityCentral报告 扩大应该保持80位类型64位平台上

如果你不想你的代码下降,从80位精度为64位精度时你移动到64位有德尔斐,点击QualityCentral链路,并投票支持我的报告。更多的选民,更有可能的内河码头听。如果他们这样做使用SSE2 64位浮点,这是有道理的,然后添加80位浮点使用FPU将额外的工作对于内河码头.我怀疑他们会做这项工作,除非大量的开发人员提出要求。

如果你真的需要它,然后您可以使用 TExtendedX87单元 通过 菲利普*M.施吕特 (潜在危险装置在那)中提到的 这一内河码头的论坛线.

@潜在危险装置:在更新你的答案与信息从我的,我会去除我的。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top