Недавно я выяснил, что Mac OS X действительно может запускать 64-битные (x64) приложения, даже если загружено ядро x86. Это было шокирующим для меня впервые.
Но потом я понял, что это действительно странно, если система работает и работает под x64-совместимым процессором, который не может запускать приложения x64, независимо от того, какое ядро управляет процессами. Это действительно так сложно? Просто загрузите чертово приложение в память и установите указатель работы процессора на первый байт, как пирог!
Единственный барьер для этого, как я мог себе представить, это некие "исполняемые заголовки". К сожалению, я не очень доволен архитектурой Windows и бинарной структурой, поэтому мне нужно больше пояснений здесь.
Де-факто стандарт UNF-подобных UNIX-двоичных заголовков ELF имеет своего брата ELF64, который (как здесь описывается в документе) не сильно отличается от ELF32, но даже при том, что 32-битные ядра не способны выполнять код x64. Да, эта программа, вероятно, связана с библиотеками x64, и давайте представим, что мы просто скопировали и вставили их прямо в папку /usr /lib64. Но я уверен, что это не поможет, почему?
И, наконец, что особенного в ядре Mac OS X, чтобы его не беспокоило использование набора программных инструкций? Есть ли в Mac OS X универсальный и подходящий для заголовка исполняемых файлов обоих ядер, так что он просто может загрузить приложение в память и сказать процессору «выполнить прямо отсюда, я не против того, что за этим стоит»?
PS: я действительно много думал о том, где разместить этот вопрос: на stackoverflow.com или superuser.com, и решил разместить здесь, потому что тема, скорее всего, более специфична для ОС.