【问题标题】:running a 32 bit binary on a 64 bit machine在 64 位机器上运行 32 位二进制文​​件
【发布时间】:2012-04-12 20:31:16
【问题描述】:

如果我们在 64 位机器上运行 32 位二进制文​​件会有什么影响。如果机器有超过 4 GB 的 RAM(系统中的 RAM 为 8GB)会有什么影响吗?

【问题讨论】:

  • 回答“否”就足够了吗?
  • 如果你说的影响是积极的影响,那么在某种程度上:更多的内存意味着更多的磁盘缓存......

标签: linux 64-bit 32bit-64bit


【解决方案1】:

在 64 位机器上运行 32 位二进制文​​件时(假设操作系统在 64 位模式下运行),您有以下限制:

  1. 二进制不能利用 64 位算术指令。这可能会降低性能。
  2. 二进制文件不能寻址超过 4GB 的虚拟内存。

但是,这些 4GB 内存可以位于 8GB RAM 内的任何位置。因此,如果您正在运行许多 32 位应用程序,每个应用程序使用不到 4GB,那么您确实可以利用所有 8GB 的​​ RAM。

请注意,由于各种限制,您的应用程序实际上可能只能分配 2GB 的虚拟内存。

【讨论】:

  • 点号。 1(二进制不能利用 64 位算术指令)对于至少两个平台是错误的。 (sparcv9-linux/solaris 和x32-*-linux)
  • 在 x64 上,32 位二进制文​​件无法访问 General-Purpose Registers 的高 32 位。因此,当添加两个 64 位数字时,一个 32 位二进制文​​件将不得不发出两条指令而不是一条指令。 @jørgensen
  • x86-64 增加了更多的东西:更多的寄存器、PIC 相对寻址、使用寄存器进行函数调用的更明智的 ABI,通常会导致性能改进,从而大大抵消使用更大 (更多缓存不友好)类型。在其他平台(sparc64 vs sparc?mips64 vs mips?)从 32 位到 64 位实际上可能会降低性能。
猜你喜欢
  • 1970-01-01
  • 2018-09-17
  • 2011-09-08
  • 2021-09-01
  • 1970-01-01
  • 2012-11-07
  • 2015-06-20
  • 1970-01-01
  • 2011-11-26
相关资源
最近更新 更多