Hishnik писал(а):
http://fforum.winglion.ru/viewtopic.php?f=34&t=373 - в основном x86
Хороший пример того, о чем я говорил - ненужности FORTH-ассемблера.
Рассмотрим, например команду ADD общего вида (32-разрядная адресация). Уже байт команды даст нам 4 опкода для разных вариатов (размера данных и направления операции), затем, следует байт адресации (256 вариантов опкодов). 4 * 256 = 1024. Отбросим 8 вариантов байта - специальную комбинацию, требующую дополнительного байта адресации и добавим еще 256 вариантов за новый байт:
4 * (248 + 8 * 256) = 9184 нуль-операндных команд только на простое сложение.
Конечно, коллега
Хищник прав, они обычно нафиг не нужны. Будет использоваться только пара другая - для частого или оптимизированного использования. Но, ведь, это и есть отрицание самой идеи ассемблера - возможности получения полного доступа к железу. Так что, игра не стоит свеч. Например, в FOBOS я засунул разработанный по молодости ассемблер (только 16-разрядные операции выкинул). Кстати, ассемблер, хоть и почти FORTH-традиционный, но очень неудобный - пользоваться им могу я один и то, только когда перечитаю исходник. И что? 300 строк - около 10% всей программы. Причем, 10-20 строк до определения этого ассемблера уже пришлось написать честно в кодах. А в дальнейшем используются примерно те же коды, которые коллега ввел, как нуль-операндные. Ради пары другой исключений держать полный ассемблер?
P.S. Моя страничка, кто заметил, сейчас недоступна. Сбой хостинга. Возможно, последний и окончательный...