Почему существует разница между языками ассемблера, такими как Windows, Linux?

Я относительно новичок во всем этом низкоуровневом материале, языке ассемблера ... и хочу узнать больше. Почему существует разница между языками сборки Linux и Windows?

Насколько я понимаю, когда я компилирую код C, операционная система на самом деле не создает чистый машинный или ассемблерный код, она создает двоичный код, зависящий от ОС. Но почему?

Например, когда я использую систему x86, процессор понимает только x86 ASM, я прав?. Итак, почему мы не пишем чистый ассемблерный код x86 и почему существуют разные варианты сборки в зависимости от операционной системы? Если бы мы писали чистый ASM или ОС производили чистый ASM, то не было бы быть проблемы бинарной совместимости между операционными системами или нет?

Мне действительно интересно все причины, стоящие за ними. Любой развернутый ответ, статья, книга подойдут. Спасибо.

19
задан caltuntas 5 January 2011 в 14:46
поделиться