Почему исполняемая программа для конкретного процессора не работает в Linux и Windows?

Исполняемая проблема, такая как exe, не работает в Linux (без Wine). При компиляции исходного кода компилятор создает объектный код, который специфичен для конкретной архитектуры процессора. Но то же приложение не работает на другой ОС с тем же процессором. Я знаю, что код может включать инструкции для конкретной ОС, которые будут препятствовать запуску исполняемого файла. Но как насчет простой программы 2 + 2? Запутанная часть - то, что, черт возьми, этот машинный код мешает работать. Машинный код, специфичный для процессора, верно? Если мы удалим формат исполняемого файла, сможем ли мы увидеть один и тот же машинный код (например, 2 + 2) для обеих операционных систем?

Еще один вопрос: как насчет языка ассемблера? Windows и Linux используют разные языки ассемблера для одного и того же процессора?

Ответы на вопрос(6)

Ваш ответ на вопрос