在64位机器上运行32位二进制文件

6

在64位机器上运行32位二进制文件会有什么影响?如果机器有超过4GB的RAM(系统中的RAM为8GB),是否会产生任何影响?


5
“不”这个答案是否足够? - user541686
如果你所说的影响是指积极的影响,那么从某种意义上来说:更多的RAM意味着更多的磁盘缓存... - dbrank0
1个回答

5
在64位机器上运行32位二进制程序(假设操作系统以64位模式运行)时,存在以下限制:
  1. 该二进制程序无法利用64位算术指令,这可能会降低性能。
  2. 该二进制程序无法寻址超过4GB的虚拟内存。
然而,这4GB可以位于8GB RAM的任何位置。因此,如果您运行许多使用少于4GB内存的32位应用程序,则可以充分利用全部8GB RAM。
请注意,由于各种限制,您的应用程序实际上只能分配2GB的虚拟内存。

第一点(二进制无法利用64位算术指令)对于至少两个平台是错误的。(sparcv9-linux/solaris和x32-*-linux - jørgensen
在 x64 架构下,32位二进制程序无法访问 通用寄存器 的高 32 位。因此,当对两个64位数进行加法运算时,32位二进制程序需要发出两条指令,而不是一条。 @jørgensen - user1202136
x86-64 添加了许多新功能:更多寄存器、PIC 相对寻址、使用寄存器进行函数调用的更合理的 ABI,通常会带来性能提升,这可以显著抵消使用更大(更不利于缓存)类型所带来的性能下降。在其他平台上(sparc64 vs sparc? mips64 vs mips?),从32位到64位实际上可能会降低性能。 - ninjalj

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接