vak: (Default)
[personal profile] vak
В 1979 году рабочая группа IEEE под руководством Вэйна Фишера разработала проект стандарта на язык ассемблера. Не для какого-то одного процессора, а вообще в целом для всех.

«With the proliferation of microprocessors, the need to establish standards for the naming of microprocessor instruction sets and assemblers has become critical. This standard sets forth a set of instruction mnemonics and descriptions, provides procedures for consistently naming additional instructions, and establishes standard assembler language characteristics.»

Скачать можно по ссылке: https://dl.acm.org/doi/pdf/10.1145/800088.802820

Но до реального стандарта этот проект так и не дорос, видимо. Что-то не сложилось.

Date: 2023-03-17 08:31 (UTC)
From: [personal profile] ivanrubilo
Спасибо, очень интересно.

Date: 2023-03-17 11:15 (UTC)
juan_gandhi: (Default)
From: [personal profile] juan_gandhi

Любопытно; но мне кажется, пока стандарт пишут, архитектура убегает вперед, и нужно что-то новое придумывать.

Конечно, для интеловских, в те поры, проблемы не было навалять ассемблер (на форте это одна страничка с таблицей обычно).

Date: 2023-03-17 15:02 (UTC)
archaicos: Шарж (Default)
From: [personal profile] archaicos
Когда пишешь под кучу изначально разных архитектур, общее выкристаллизовывается, и добавление инструкций, режимов, расширение адресации уже мало чего меняет принципиально, оно обычно вполне вписывается в это общее. Intel, ARM, MIPS, TI... В общем-то пофиг.

Date: 2023-03-17 15:24 (UTC)
juan_gandhi: (Default)
From: [personal profile] juan_gandhi

Еще пофиговее, когда пишешь для JVM. Последний раз я курочил байткод 6 и 7 лет назад.

Date: 2023-03-22 19:26 (UTC)
From: [personal profile] iyak2
Неплохо бы дополнило идею метаассемблера. Для стандартизации некоторых мнемоник инструкций.
Но, кажется, метаассемблер до Си был прикольной идеей, но не было достаточно "хорошего" языка, чтобы его переносить, а после Си всем показалось, что Си и сам стал таким неким "метаассемблером", похоже, на этом остановились. Или просто забыли?
Из книги Д.Баррона "Ассемблеры и загрузчики" упоминание по метаассемблеру в списке литературы датируется 1960 и 1966 годом.
Edited Date: 2023-03-22 20:51 (UTC)

Date: 2023-03-23 12:12 (UTC)
From: [personal profile] iyak2
Хотел сказать, что, да, Си стал своего рода высокоуровневым ассемблером, которому требуется ассемблер лишь в крайне редких случаях, оптимизация и написание ОС. Это да.
А вот идея метаассемблера, в который встроена возможность саморасширяемости, т.е. введение вместе с исходником новых форматов инструкций для трансляции на другую машину, типа настраиваемый кросс-ассемблер, кажется не исчерпана. Думаю, для МА risc ни чем не хуже cisc. Но это надо еще посмотреть. В книге Баррона причиной ставится малая исследованность, хотя мета-ассемблеров было аж 50(Assemblers And Loaders. - David Salomon), а статей крайне мало, упоминаемая в книге, сейчас доступна:
https://dl.acm.org/doi/pdf/10.1145/365230.365264
Переводчик книги в комментариях, пишит, от непереносимости. Хотя если теперь учесть, про существование упомянутого тогда BCPL, на котором можно было написать переносимый МА, в теории, то получается все очень странно. Наверное, это просто сложно. Например реконструированный макроассемблер macro-11 в исходниках просто чудовищный. Каков будет МА? Кому-то вообще проще написать/переписать unix'овый as, зная его досконально, под нужную архитектуру и не париться. Не говоря, что есть еще Yacc или Bison.
Edited Date: 2023-03-23 12:12 (UTC)

Date: 2023-04-07 05:46 (UTC)
From: [personal profile] iyak2
Кстати, добавлю к предыдущему своему комменту, касательно досконального изучения as Unix.
В строке 170 файла https://github.com/sergev/bkunix/blob/master/cross-devel/as/as16.c должно быть -376, а вот в строке 162 все правильно. Также в исходника на ассемблере тоже -376. Это срабатывает при ссылке назад псевдоинструкции jbr/jcc, при выходе из дипазона адресации обычной инструкции ветвления.
Вообще ассемблер в MINI-UNIX, переписанный с языка ассемблера на Си, это одна большая диверсия, возможно для советских программистов, куча ошибок, похоже, он ни разу не запускался, кем был написан.
Edited Date: 2023-04-07 06:18 (UTC)