Как стать автором
Поиск
Написать публикацию
Обновить

Комментарии 19

Здравствуйте. Недавно, я сам занялся вплотную изучением языка Assembler. И у Вас, честно, Ужжжжасная статья, хотя я рад, действительно рад что Вы ее написали. Но почему я сказал что статья Ужжжжасная и с большой буквы. Я как понял, Вы не учили людей, от слова совсем.

  1. Начните с простого, объясните регистры начального уровня (AH, AL) и постепенно переходите к регистрам высокого уровня (EAX, RAX). Покажите схематичную разницу между ними и т.д.

  2. Затем дайте список с определениями:

    EAX (как пример) - это аккумулятор, применяется тогда то и тогда то и при таких условиях

    EBX - ...здесь описание и т.д.

  3. Расскажите о FLAGS. Как они работают

    CF - (Carry Flag) флаг переноса... устанавливается при таких то условиях

    ZF - ... и т.д.

  4. Дайте простейшие примеры кода. Как и при каких условиях будут меняться флаги

    Как пример MOV AH, 1 будут ли изменяться флаги и какие или не будут

Ну и т.д. А то в Вашей статье, мало того, что голову сносит от прочтения, так и еще отталкивает от дальнейшего изучения ассемблера. А на самом деле он настолько простой и понятный.

P.S. И не прыгайте вокруг архитектуры. Если Вы взялись описывать ARM то дальше объясняйте про то, как работает ARM и не смешивайте его с x86. Мои все примеры основаны на x86

И что? Так надо делать нормальную и полную статью про Ассемблер. Я тоже могу много чего перевести, но этого не делаю. Но в данном случае разговор идет об ассемблере. Дайте полную информацию. Если надо сделать авторские дополнения, то сделайте. Иначе это что получается? Хайп ради хайпа - "смотрите, я какой крутой и опубликовал статью про ассемблер". И не важно, что новички ничего не поймут, испугаются и уйдут там, например на Питон - странный подход. Про ассемблер много чего можно рассказать и показать. Действительно научить людей. Сейчас, с учетом спроса на ретро-игры, люди начали массово изучать ассемблер, Watcom C и т.д., чтобы "возродить" любимую игру в новом формате или понять, как люди делали игры и софт в целом в конце 80/начале 90ых - без всяких крутых IDE, автокомплитов, интеллисенсов и прочее

Статья то не про ассемблер, а про то как устроен машинный код.

Статья то не про ассемблер, а про то как устроен машинный код.

ИМХО про это есть более удачные статьи. Однако, так как я и Ассемлеры сейчас Ооочень далеко друг от друга (а впрочем и во время университета тоже не были сильно знакомы), то никаких конкретных рекомендаций дать не могу 😒. Разве что соглашусь с советами про PDP-11. Чисто из общей логики: так как архитектура PDP-11 университетах в качестве "академического примера" уже лет 40-50, то есть шанс, что ,изучив её, будешь проще понять разработчиком современных архитектур, которых в ВУЗе тоже "мучили" VAX-ом и PDP-11

IMHO, это объём информации для толстой книги, а не для статьи на Хабре

Не соглашусь. Я же не зря написал, что ассемблер простой и понятный. В самом начале, можно объяснить архитектуру, что такое регистры, сегменты, флаги, память и как они между собой взаимодействуют. На другом этапе можно рассказать об основных операциях: помещения значения в регистр/стек (пример: mov; push, pop), арифметических операциях (пример: add; sub), условных/безусловных переходах (пример: jmp; jnz; jbe), функциях (пример: call; ret), системные вызовы и прерывания (пример: int), по какому принципу строится программа на ассемблере. И на последнем этапе, можно показать несколько примеров и не только "Hello World". Легко можно уложится в 2-3 публикации, чтобы заинтересовать читателей. Если публикации "взлетят", то можно расширять сложность работы с ассемблером. Не надо выдавать абсолютно всё, т.к. даже большая часть команд никогда не используется в реальных условиях

Да, еще неплохо в самом начале упомянуть про управление памятью, пейджинг, кольца защиты, обработку IRQ в прерывании, кеширование на трех уровнях, локи, атомики ну и все такое

Скорее всего, не для всех, кто на Хабре)

У них цель - напомнить о себе, любыми доступными способами. Какой смысл ожидать от компании, у которой бизнес абсолютно не связан с программированием в машинных кодах, чего-то большего, чем просто текст?

Согласен, ужасная статья. Если уж автор замахнулся на вопрос с разными архитектурами, то надо было бы начать с понятия одноадресных, двухадресных и т.д. архитектур. И вообще что такое система команд. А то получилось, что между x86 и ARM

Самое же большое отличие в том, что длина набора инструкций для x86 не фиксирована

Если начинать изучать с x86, то понятно будет мало, даже ничего. Для желающих надо начинать с архитектуры и системы команд СМ ЭВМ, он же PDP-11, самый простой и понятный, логичный, используется для обучения в ВУЗах, сам с него начинал. А у же дальше приступать к другим архитектура и ассемблерам.

Про PDP-11 я ничего не знаю. Ловлю всю инфу по процессорам Zilog Z80, Motorola 68000, поколение x86 начиная с 386. Поэтому с жадностью ловлю всю инфу и на всех ресурсах по асму. А на любимом Хабре, в этой статье с громким и интригующим названием, заходишь почитать статью про асм, а тут такой облом... :'( Хнык

P.S.: Если и изучать в наше время асм с 0, то все таки надо учитывать более или менее актуальные технологии и архитектуры: RISC-V, ARM, x86. Пригодится реверсерам (ретро-гейминг, читы), безопасникам (исследование вирусов), программистам (часть кода можно переложить на плечи асм)

Тут посыл несколько отличающийся. Что у PDP-11 ассемблер легче по сравнению с другими поддаётся изучению, если до этого не прикасался ни к каким ассемблерам вообще.

В принципе в ARM тоже всё логично.

Более того, двухадресная система команд PDP-11 – по нынешним временам скорее анахронизм. Хотя для своего времени это было нормально.

Система команд MSP430 сделана по схожей с PDP-11 схеме.

Я б сказал - она подчистую слизана с PDP-11. Разница там только в том, что увеличили число регистров и жертвой этого пали некоторые режимы адресации со всякими автоинкрементами и автодекрементами в src, а также пропала косвенная адресация dst (откуда-то пришлось пару бит позаимствовать...). Ну еще call в MSP сильно проще, чем JSR/RTS и больше не позволяет организовывать корутины. А так - остальное косметика, вроде того, что R7 стал R0, а R6 - R1.

Ну еще call в MSP сильно проще, чем JSR/RTS и больше не позволяет организовывать корутины.

А что мешает их организовать-то?

Зарегистрируйтесь на Хабре, чтобы оставить комментарий