为什么Intel x87寄存器的宽度为80位? [关闭]

问题描述 投票:7回答:1

为什么使用这种“怪异”的寄存器大小?是否有任何文档说明为什么不建议对那些寄存器使用64位或128位?

assembly x86 intel cpu-architecture x87
1个回答
9
投票

[Wikipedia page on the IEEE 754-1985 standard上有一个关于80位扩展格式的很好的解释:

“该标准还建议使用扩展格式来执行内部计算的精度高于最终结果,以最大程度地减少舍入误差”

双精度浮点数以64位表示。您可能希望再多一些位才能获得更高的中间结果精度,但是当最终结果中只需要64位时,使用128位类型将是过大的选择。]

80位是一个合理的偶数,大于64位。

考虑到那些标准建立时的数据总线是8位或16位,而不是今天的32位或64位。如果今天写的标准是96位,这将是一个更合理的数字,或者即使数据中不使用所有这些位,也可能将数据以128位的形式传输。

© www.soinside.com 2019 - 2024. All rights reserved.