EDIT:
Ассемблер обычно имеет один к одному отношения судно с машинным кодом, или набор команд для этого процессора/системы. Системы по-разному, потому что они имеют разные наборы инструкций. Таким образом, по определению у вас не может быть набора кросс-системных команд, поэтому нет языка ассемблерной перекрестной системы и его все еще называют языком ассемблера.
Ближайшие, которые вы найдете, это виртуальные наборы команд, если вы будете близки к уровню машины, поскольку у них есть свойства, которые являются общими для многих наборов инструкций, отношения один к одному или от одного до нескольких с машинным кодом, но не особенно для одной машины. Например, байт-код Java, байт-код python, p-код pascal и т. Д. Это машины на основе стека, большинство процессоров имеют стеки или могут легко реализовать машину на основе стека, используя нагрузки и магазины. Машины на основе стека используют несколько регистров, еще один способ получить перекрестную систему, а не слишком тяжело применять на различных наборах инструкций. Основанный на стеке также лежит в основе бэкэнда small-c, поэтому он так легко переносится из одной системы в другую. История повторяется, эти четыре языка не являются последними языками, которые будут сводиться к машине на основе стека, это произойдет снова и снова.
Если вам нравится сборка, вы можете найти java или python бэкэнды интересными и, возможно, забавными. У них, вероятно, нет ассемблера только машинный код, поэтому вам, вероятно, потребуется написать собственный ассемблер. Лично я бы начал с дизассемблера, чтобы почувствовать язык, затем пойти другим путем и написать байт-код или создать ассемблер. В равной степени удовольствие может быть связано с реализацией виртуальной машины для конкретного процессора.
Ваши комментарии о симпатии ассемблера, а затем использование слова NASM подразумевает x86.x86 - несколько неприятный ассемблерный язык, если вы не испытывали других, есть еще несколько красивых языков ассемблера. Вы должны попробовать их вместо того, чтобы искать один размер, подходящий для всех (который вы на самом деле не найдете).
bytecodes намного ближе, чем C, C - язык высокого уровня. на основе стека, в частности (java), а некоторые процессоры на основе стека (zpu) ближе к общему asm. –
байт-коды не являются перекрестной архитектурой. Они эмулируют один и тот же процессор в любом месте. Можно так же легко сказать, что x86 переносится из-за QEMU –
OP запросил программирование на языке ассемблера кросс-системы. Никто не пишет программы в байтовых кодах. – uselpa