0

在 64 位 CPU 上执行 32 位程序时,我们是否可以假设底层硬件将使用内存和 CPU 寄存器中的 32 位值来存储整数?

鉴于这些设置:

  • Intel i5 + Windows 32 位 + 32 位应用程序
  • Intel i5 + Windows 64 位 + 32 位应用程序

请解释每种设置的缺点。使用第二个效率会降低,因为 CPU 需要额外的工作来忽略寄存器值的停止吗?

4

2 回答 2

2

当 x86_64 处理器执行 32 位代码时,它实际上是在 i686 模式下运行。这一切都是在硬件中实现的,因此没有性能损失。

无论操作系统是 32 位还是 64 位,用户空间 32 位程序都将以“32 位模式”执行,因此行为应该相同。

唯一的潜在缺点是程序可能需要动态链接到一些 32 位库,这些库默认情况下未安装在 64 位操作系统上。这种情况在 Linux 上更为常见,程序动态链接到外部库更为常见;我在 Windows 上能想到的唯一示例是,如果程序需要 Visual C++ 运行时库,那么您必须安装 32 位版本(如果其他程序需要,可能与 64 位版本一起安装)。所以简而言之,您可能需要安装更多 64 位设置的东西。

此外,实际操作系统在 64 位设置上可能会消耗更多内存,但是 32 位系统的一个缺点是您的整个系统内存大小限制为 4GB(或实际上大约 3.5 GB,因为一些内存空间被映射到硬件)。

于 2013-03-27T15:21:39.517 回答
0

64 位知识库:在 Win32 和 Win64 中应用程序可以访问多少内存?

于 2013-03-27T16:38:14.497 回答