小编pec*_*nie的帖子

OSX 如何在 32 位内核上运行时运行 64 位二进制文​​件?

我最近发现即使加载了 x86 内核,Mac OS X 实际上也可以运行 64 位(x64)应用程序。这是第一次让我震惊。

但后来我意识到,如果系统在 x64 兼容 CPU 下启动并运行,则无论哪个内核管理进程都无法运行 x64 应用程序,这真的很奇怪。真的有那么难吗?只需将该该死的应用程序加载到内存中并将 CPU 操作指针设置为第一个字节,就像馅饼一样简单!

正如我所想象的那样,唯一的障碍是某种“可执行标头”。不幸的是,我对 Windows 架构和二进制结构不太熟悉,所以我需要在这里做更多的解释。

事实上类UNIX操作系统二进制头标准的ELF有它的兄弟ELF64,这(如文档这里描述)没有与ELF32多大差别,但即使32位内核是无法运行的x64代码。是的,这个程序可能链接到 x64 库,假设我们只是将它们复制并粘贴到 /usr/lib64 文件夹中。但我很确定这没有帮助,为什么?

最后,Mac OS X 内核有什么特别之处,所以它不用担心使用的程序指令集?Mac OS X 是否有一些通用且适用于两个内核可执行文件的头文件,所以它只能将应用程序加载到内存中并对 CPU 说“从这里执行,我不介意它代表什么”?

PS:我真的很想把这个问题放在哪里:在 stackoverflow.com 或 superuser.com 上,并决定放在这里,因为这个主题可能是更多特定于操作系统的东西。

windows unix 64-bit 32-bit macos

7
推荐指数
1
解决办法
3799
查看次数

标签 统计

32-bit ×1

64-bit ×1

macos ×1

unix ×1

windows ×1