Por que um programa executável para uma CPU específica não funciona no Linux e no Windows?

Um problema executável como o exe não funciona no Linux (sem vinho). Ao compilar o compilador de código-fonte, produz código de objeto específico para uma arquitetura de cpu específica. Mas o mesmo aplicativo não funciona em outro sistema operacional com a mesma CPU. Eu sei que o código pode incluir instruções específicas para o sistema operacional que impedirá a execução executável. Mas e quanto a um programa simples 2 + 2? Parte confusa é o que diabos esse código de máquina impede de funcionar. Código de máquina específico para cpu certo? Se removermos o formato de arquivo executável, poderemos ver o mesmo código de máquina (como 2 + 2) para os dois sistemas operacionais?

Mais uma pergunta: o que dizer da linguagem assembly? DO windows e linux usam linguagens assembly diferentes para a mesma cpu ?.

questionAnswers(6)

yourAnswerToTheQuestion