• Что можно написать новичку на асм?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Если ты новичек - начни с простого. Когда я учился в универе - у меня был просто интерес написать
    графическую библиотеку для SVGA/VGA режимов графики. На дворе стояли 90-е и тогда не было
    никаких ускорителей и видяшки назывались S3/Trident. Вобщем сильно много я не написал.
    Было просто рисование цветных трапеций на экране. И это чудовищно непроизводительно для
    процесса разработки. Любой С++ ник заткнет тебя за пояс по скорости выкатки новых фич.
    А качество кода на выходе у gcc вполне себе хорошее чтобы не найти вообще кейсов где
    человек может лучше написать. Вообще в чем заключается оптимизация на асме? Держать
    в голове карту регистров и помнить какой из них под чего использован. Еще неплохо-бы
    помнить что у тебя в кешах лежит.

    Что еще из простого. Попробуй реши квадратное уравнение на FPU и на SSE. Это разные
    техно-стеки и будет познавательно сравнить какой способ лучше или удобнее.
    FPU - это легаси но он еще поддерживается в железе. Я тоже хотел когда-то написать но бросил
    в силу своей нетерпеливости. Мне было интересно понять насколько FPU близок к языку Forth.

    По топику выше пишут интересные советы по брутфорсу но это задача на уровне алгоритмизации
    сложная и я-бы на твоем месте все таки начал с квадратных уравнений. Заодно освоишь работу с вводом
    выводом текста.

    Вобщем брутфорсы и умноженя матриц это очень круто но ту просто попробуй это ПРАВИЛЬНО решить
    на языке высокого уровня и проникнись с сложностью решения. И я думаю на этом этапе ты устанешь
    и не пойдешь дальше. Вообще ассемблер - это язык очень узкого применения и какие-то языковые
    фичи (ООП) в ассемблере уж точно не нужны. Ну по крайней мере они там не имеют какого-то явного
    преимущества.
    Ответ написан
    Комментировать
  • Что почитать по теме низкоуровневого программирования?

    evillianester
    @evillianester
    Энтузиаст Open Source
    Для начала можно Чарльза Петцольда - "Код. Тайный язык информатики". В этой книге рассматривается подход от простого к комплексному. Все начинается электронами и заканчивается базовыми ассемблерными инструкциями. Лучшая книга для изучения Computer Science "с нуля".

    Затем, можно пройти небольшой бесплатный буткемп по ассемблеру NASM на этом сайте https://ravesli.com/uroki-assemblera/. При желании "потрогать ручками" можно идти по главам вместе с автором и писать код. По итогу выйдет около 7 маленьких однофайловых программ на NASM'е, которые можно даже на GitHub закинуть.
    Ответ написан
    Комментировать
  • Актуален ли ассемблер на сегодняшний день?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Ассемблер полезен при анализе прошивок на безопасность.
    При изучении того как работает софт без исходного кода (обратный инжинеринг)
    и при решении задач интеграции разных слоёв софта.

    Ассемблер также очень близко стоит к разработке компилляторов. И если у вас нет
    соотвествующих знаний то строить свой компиллятор вы не сможете. Или вам нужно
    будет изучать готовые back-ends, virtual-machines.

    Ассемблер помогает при анализе узких мест в коде. В частности например
    векторизация вычислений ставит в первую очередь вопросы на которые ассемблер
    отвечает а ЯВУ - нет.

    Знания ассемблера помогают сделать бинарник компактнее. Это важно при разработке
    встраиваемых систем.
    Ответ написан
    Комментировать