【问题标题】:Is Int64 supported on all Windows versions?所有 Windows 版本都支持 Int64 吗?
【发布时间】:2012-01-17 04:18:53
【问题描述】:

如果我使用Int64 类型的变量,它是否适用于所有Windows 版本:win95、98、2000、nt、xp、vista、win7?不管是 32 位还是 64 位的操作系统?无论他们使用什么 CPU?

我只是想确定一下,我的程序可以在所有 Windows 版本上运行。

【问题讨论】:

标签: windows delphi 64-bit integer 32-bit


【解决方案1】:

一种语言提供的数据类型的大小不受操作系统或硬件平台的限制。我可以在 32 位平台(或 16 位或 8 位或 11 位)上拥有 64 位整数。

【讨论】:

  • 某些语言的数据类型根据目标平台的不同而不同。 Delphi 确实如此,NativeInt。我想我知道你的意思,但措辞不明确。
  • 公平点。但总的来说,数据类型的精度与操作系统没有任何关系。 64 位数学不需要 64 位操作系统。
  • 确实可以在非常原始的机器上完成任意精度的数学运算。我认为你的意思是底层平台不限制可以操作的操作数的大小。
【解决方案2】:

Int64 变量受 32 位 Delphi 编译器支持。无论代码在什么平台(机器、操作系统等)上执行,对Int64 操作数的所有操作都会给出相同的结果。

在 32 位平台上,编译器必须使用特殊的例程来使用可用的 32 位机器指令执行 64 位算术。当以 64 位机器为目标时,编译器可以使用本机 64 位指令。无论如何,最终结果对你来说是无法区分的。

请注意,如果您在 64 位操作系统上执行 32 位 Delphi 可执行文件,您仍将使用 32 位模拟器,即 WOW64。从可执行文件的角度来看,您是在 32 位机器上运行的。除非您使用 XE2 中引入的新 64 位编译器,否则您将生成 32 位可执行文件。

【讨论】:

    【解决方案3】:

    64 位整数可以在 32 位操作系统上正常工作。 然而,只有在使用为 64 位操作系统编译的代码时,使用这些数据类型才能获得性能提升 - 为此您需要 Delphi XE2。

    同时,您可以获得额外的数据容量,但没有额外的执行速度(尽管这通常不是大多数应用程序的考虑因素)。

    【讨论】:

    • 澄清一下,64 位整数并不比 32 位整数快,但本机 64 位整数比非本机 64 位整数快。
    • 没错,可能我的描述不够清楚。更具体地说,超过 CPU 寄存器大小的操作数将比不超过 CPU 寄存器大小的操作数慢。因此,在运行 64 位操作系统(使用 64 位代码)的 64 位 CPU 上,64 位整数运算比在需要更多运算(= 更多 CPU 周期)才能达到相同结果的 32 位系统上执行更快。
    猜你喜欢
    • 2012-02-20
    • 1970-01-01
    • 2017-10-06
    • 1970-01-01
    • 2011-04-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-28
    相关资源
    最近更新 更多