> никто из анонимов не понимает, о чём пишет.Тот Аноним прогал на штуках пяти разных ассемблерах. И x86 был наиболее блевотным из таковых, хуже ассемблер вообще наверное только PIC. Но там это простительно за то что этот таракан делается на ископаемом оборудовании (чуть не 1u) и поэтому отсыпается по цене кремния и пластмассы из которых состоит, с очень маргинальной накруткой.
> А почему вы спг’ашиваете?
А потому что есть подозрения насчет титиретиков.
> Чё на него смотреть? RISC как RISC.
Большинство тех кто развлекается програмингом на асме ссали после совета на него посмотреть кипятком. Ну вот прикольная штука. Логичная, симметричная, набор команд не тупой.
> С этой дурацкой манерой выполнять операции исключительно над регистрами,
А все потому что это - просто и быстро. Изначальный x86 вообще убл*док редкий, в этой фекалии position-independent код вообще нельзя толком сделать, адовые костыли с релокациями, совершенно кретинская адресация и полтора регистра на все, так что программа состоит из пушпопов чуть менее чем полностью.
В x86-64 стало немного получше - но таки голимый костыль над легаси уродцем, это уж точно не являет собой state of art процессорных ядер и наборов команд. Всего лишь попытки сделать из антика хоть какое-то подобие современного проца. Довольно жалкое.
> необходимостью в две-три команды грузить полное значение регистра из immediate операнда.
1) Современные компилеры умеют нехило кешировать и глобально оптимизировать это дело. Благо регистров - есть. А прикинь, gcc оформляет сплев бита в GPIO чуть не парой команд, ты и на голом асме лучше хрен напишешь. А на х86 это действо... хм... там вообще ничего такого способного за пару циклов лапой дернуть не бывало вроде никогда и никак. И эти люди быкуют на ARM? :P
2) Если ассемблерщик так не умеет - на кой черт он вообще нужен?
3) Кроме immediate, видите ли, грузить можно еще [r] и [r+off]. И даже инкретменты всякие бывают. Опять же - gcc в этом плане поумнее "типа-ассемблерщиков" бывает. Оформив кучу констант блоком, вгрузив его базу в какой-нибудь регистр и танцуя от него смещениями. Ну да, это немного иной стиль програмизма, но он вообще совсем ничем таким не плох, тем более что при серьезном замахе на такое - асм сам может смещения по символическим лэйблам считать.
> На это похрен, когда этим компилятор занимается, но вручную я этим заниматься не буду.
На самом деле оно и вручную неплохо получается. К тому же если хотелось автоматики и проч - ну, компилер ее и сделает. И кстати довольно оптимально для такой архитектуры, кодогенерация у того же gcc на редкость приличная в случаях когда это может быть интересно.
>> ты захочешь когда-нибудь еще програмить для x86.
> Хаха.
Как минимум, у ARM нормальная модель памяти и логичные адресации используя регистров а не дикое ушлепанство с сегментами которое придумывал какой-то наркоман, а потом обезьянили до упора.
> Ну вот у RISC-V декодер ещё проще.
Спорный вопрос. Скажем Cortex-M0 - одно из самых мелких процессорных ядер, кристалл мизерный. Правда и набор команд за это обрублен, условные команды (IT + порция команд) обкушены. Это все же нагибает эффективность кода уже. Кстати, thumb2 весьма эффективный набор команд, а для простого декодера так и есть state of art. Сделать вот ЭТО без ucode rom - вот так и видно кто профи, а кто углы срезает, как интел по жизни. Впрочем досрезались с своими спектрами мельдониевыми, желаю им обанкротиться нахрен. Давно заслужили за такую "инженерию", где маркетинг сожрал здравый смысл.
> Плюс система команд разработана с мыслью о том, что команды конвееризировать,
> и что конвееров может быть больше одного.
С другой стороны - не особо продумано насчет микроконтроллеров и проч где суперскорость нафиг не надо, надо максимальную предсказуемость по времянкам. И вот тут простой и быстрый набор команд оказывается EPIC WIN-ом. Ну они и захватили рынок, основательно поперев 8-битники.
У ARM есть разные варианты ядер - от микроконтроллеров до серверов. А прикольно в этом то что система команд более-менее одна и та же. Ну и за все эти конвееры и проч расплатами уязвимости и потеря предсказуемости. Где-то с этим можно жить, а где-то нет.
> Как раз они были в курсе, и о всех этих зависимостях по данным, и тех костылях,
> которыми надо подпирать флаги, чтобы переупорядочив команды
> эмулировать то самое поведение, как будто в процессоре есть один физический
> регистр флагов, и что инструкции выполняются последовательно.
Они были слишком однобокие и не учли некоторые системные моменты. Переклинившись на конкретных юзкейсах но не имея внятного гранд-плана. По поводу чего гораздо тухлее смотрятся в реалтаймных системах и микроконтроллерах. Давай расскажи как это не надо, а надо сраные сервер с котиками. А то на чем вся планета держится пусть, дескать, нвидия нагибает. Логика хомяка, которому "и хрен с поездами, лишь бы котики с вконтача грузились".
>> Поэтому бутануть cortex-M одними сями - легко. А вот RISCV таки все же потребует
>> небольшой но все же асмовый стартап, увы и ах.
> Ты так говоришь, будто это что-то плохое.
Да, я считаю что написать фирмаварь на си без единого бита асма - это прикольно придумали. Правда, в паре мест - только подумайте - тоже наследие легаси - и они таки тоже протупили.