Я относительно новичок во всем этом низкоуровневом материале, ассемблере.. и хочу узнать более подробно. Почему существует разница между Linux, Windows Assembly languages?
Как я понимаю, когда я компилирую код C, операционная система на самом деле не производит чистый машинный или ассемблерный код, он выдает двоичный код, зависящий от ОС. Но почему?
Например, когда я использую систему x86, CPU понимает только x86 ASM. Правильно ли?. Почему мы не записываем чистый x64-ассемблерный код и почему существуют разные варианты сборки на основе операционной системы? Если бы мы писали чистую ASM или ОС, производящую чистую ASM, не было бы проблем с бинарной совместимостью между операционными системами или нет?
Мне действительно интересно все причины. Любой подробный ответ, статья, книга были бы замечательными. Спасибо.