Comdiv писал(а):
Без теории люди часто не видят за деревьями леса, но я не хочу вдаваться в теорию, поясняя, что означает алгоритмическая полнота. Скажу только, что в мире было сделано много самых разных средств для запуска программ, изначально написанных для других архитектур. Это и есть переносимость.
Константин, Вы как-то "замылили" ответ. Мы сейчас вообще не о теориях и не об алгоритмической полноте. Мы о том, что ассемблерная конструкция
MOV EAX, EBX имеет смысл _только_ на процессорах архитектуры Intel/AMD 80x86. Точка. Всё. Никакой переносимости. Это и есть ассемблер. На других процессорах может не быть такого же набора регистров. Или они там вообще будут 64-битные. Или там будет стековая архитектура. Или Вы будете говорить о переносимости между Intel-совместимыми процессорами?
Ассемблер это мнемоническое представление для машинного кода процессора, более удобное для чтения человеком. Машинный код разных процессоров полностью или частично несовместим. Поэтому ни о какой переносимости, за исключением очень и очень редких и специфических случаев типа аппаратной эмуляции одних архитектур на других, речь не идёт. Любой программный эмулятор это прослойка между двумя архитектурами, но ассемблеры у них разные. Мы о переносимости ассемблера говорим. А не о программной или аппаратной эмуляции.
Цитата:
Вот код для 64-разрядной архитектуры MIPS, вот – для 64-разрядной архитектуры POWER. Вы можете заметить, что они похожи. Причина в том, что они, по сути, являются одним и тем же языком. Отчасти потому, что они так устроены: по сути дела, мы 30 лет использовали ассемблер National 32000, меняя только лишь железо, на котором он использовался. Но ещё и потому, что некоторые из них действительно идентичны. Это просто инструкции, регистры, операнды, константные значения, метки — всё одно и то же. Единственное важное отличие заключается в том, что у инструкций и регистров разные имена. Ещё иногда отличаются смещения, но это зависит от размера машинного слова.
Этот текст — не о том, что все на свете процессоры устроены одинаково. А о том, что у них было такое семейство процессоров. Всё. А то знаете, есть такая украинская пословица: "Похожа свыня на коня, тилькы хвист не такый".
Цитата:
У него другой синтаксис, иногда другие имена инструкций, потому что на каком-то уровне это фактически псевдоинструкции. На самом деле, это неважно.
Нет, на самом деле это самое архиважное. И более того, если даже у вас один и тот же процессор, то другие аппаратные составляющие платформы могут быть совершенно различными и непохожими.