Вы можете использовать другой набор символов для представления машинных кодов. Но никто не мешает, потому что вы не получите много.
ARM имеет инструкцию ADD. В ассемблере ARM «ADD r0, r0, # 1» представляет 4-байтовый машинный код, который представляет собой инструкцию для приращения регистра 0.
Как бы вы ни называли эту инструкцию, вы не можете изменить набор доступных инструкций и все равно называть ее ассемблером ARM. По сути, это все тот же язык программирования, называете ли вы операцию ADD «ADD», или «SUM», или «PLUS», или «ADDITION». Поскольку легче использовать существующие ссылки, если все используют одинаковые имена для всего, вот что происходит.
Одним из полезных изменений может быть представление команды в виде "INC r0", поскольку ARM не имеет инструкции INC, и это обычная операция. Это приводит к макросам на языках ассемблера. Они действительно меняют язык, но как только у вас есть макросы, которые выдают несколько инструкций ARM, вы начинаете терять WYSIWYG-характер сборки. В конце концов вы начинаете думать, что, возможно, вы могли бы просто написать C. Я говорю по опыту (это был не ARM, а макросизированный ассемблер).
Одно из распространенных отличий заключается в том, что если вы хотите быть педантичным, вы можете утверждать, что существуют две разные версии языка ассемблера ARM, одна в верхнем регистре и одна в нижнем регистре (или утверждать, что существует один язык с несколькими символами для то же самое). Разные дизассемблеры одного и того же машинного кода иногда выводят разные форматы. Иногда они настолько различны, что конкретный ассемблер не справится со всеми из них, или ассемблеры предложат свои собственные удобства, несовместимые с другим ассемблером на той же платформе. Но на самом деле, это все одно и то же, и если вы пытаетесь провести различие, это, как правило, потому, что вас укусили в задницу, а не потому, что происходит что-то хорошее ...