Как выглядит программа на ассемблере на разных платформах?
Интересуюсь ассмом. Вот не могу понять. К примеру под Винду программа будет выглядеть по одному, а под Линукс по другому. Тут скорее понятно чем не понятно. Еще пишут что под разные платформы (процессоры) программа на ассме тоже будет выглядеть по разному. Тут в принципе тоже логично, но сомнительно.
Суть непонятки вот в чем. Действительно ли, написанная в NASM-е программа будет выглядеть по разному к примеру под Windows на I3 или I5 или I7 процессорах или под Linux на I3 или I5 или I7 процессорах? И в чем будет разница?
В общем, я уже запутался. Не могу для себя расставить все по полочкам. Поясните, пожалуйста, или ткните что почитать. Не знаю как адекватно вопрос составить что бы найти то что нужно.
Вас интересует программа на асме или непосредственно машинный код?
Машинный код выглядит по-разному для разных архитектур. Разные процессоры могут иметь отличающийся набор команд, но в случае x86 процессоров, эти изменения заключены в дополнительных инструкциях, поэтому программа может выглядеть одинаково, а может иметь отельные команды другие (оптимизированные).
Что касается непосредственно текста на ассемблере - сейчас под виндовс и линукс редко пишут на чистом ассемблере, не пользуясь библиотеками. Если же пользоваться - то вызов системных функций естественно будет отличаться, потому что они разные в разных системах.
по сути, больше всего меня волнует что если я напишу что ни будь у себя на Окнах на і3, то потом на Окнах на i5-ом оно не будет работать и нужно будет что-то ковырять, дописывать/переписывать. так же и с Убунтой.
Александр Санеев:
На вашем уровне, окна i3 и окна i5 не будут отличаться.
ПО поводу убунту - зависит от того, что именно вы будете писать.
Программа на ассемблере выполняется не на чистом процессоре, а запускается процесс в вашей операционной системе, следовательно есть зависимости.
Если спуститься на уровень ниже, например пишете свою операционную систему - вы будете зависеть в основном от платформы (функции биоса, чипсет, откуда собственно программа грузится)
Поэтому программа на ассемблере на убунте и винде могут отличаться, например тот же hello world - напрямую функции биоса вы из операционной системе вызвать не сможете, а функции системы по выводу строки - они разные.
Linux и Windows - это операционные системы, набор библиотек для работы с графикой и устройствами. Все математические расчеты на асме будут выглядеть одинаково на одинаковых процессорах. Есть такое понятие набор команд, есть такие: x86, amd64, ia64 - для каждого набора команд программа не изменится. А вот работа с библиотеками будет различной.