Программа скомпилирована с некоторого языка в ASM -> Машинный код (непосредственно исполняемый файл). Когда люди говорят, что это зависит от платформы, значит, что созданные двоичные файлы будут выполняться (правильно) только на процессорах с такой же архитектурой набора инструкций, как x86, x86-64. Он может (неправильно)/не может (вообще) работать на других процессах из-за разницы в ISA. Правильно?Как выполняется программа? Где действуют операционные системы?
Теперь понятие двоичных файлов меня сбивает с толку. Все дело в «Кодексе машинного языка» & «ЦП». Где ОС вступает в игру? Я имею в виду, что скомпилированный двоичный файл имеет прямые инструкции для CPU, когда он загружается в память. & Процессор выполняет одну инструкцию за раз. Я не мог видеть роль операционной системы в любом месте, кроме управления процессами link text. Он должен работать на ЦПУ той же ISA независимо от операционной системы. правильно?
Однако это не тот случай. Если я создам код для x86 на машине Windows. Он не будет работать на машине Mac x86 или машине Linux x86.
Мне что-то не хватает. Пожалуйста, очистите мое замешательство.
Re "* поэтому Linux не будет загружать это *", но что мешает Linux-программу иметь возможность запускать это? – Pacerier
Действительно, что мешает Mac реализовать реализатора PE, чтобы все приложения Windows могли запускаться на Mac из коробки? – Pacerier
@Pacifier: Деньги, в основном. Тем не менее, Microsoft _did_ реализует подсистему ELF (подсистема Windows для Linux). – MSalters