banner

Блог

Jul 27, 2023

Кто боится языка ассемблера?

На этой неделе [Эл Уильямс] написал замечательную статью о том, стоит ли вообще вообще изучать ассемблер и когда. Комментарии переполнились, и мы удивлены, что так много людей в основном с нами согласны: да. Конечно, это Hackaday-тусовка, но я все же не ожидал излияния любви к самому примитивному из языков.

Однако язык ассемблера на самом деле не является одним языком. Каждый чип говорит на своем диалекте. Конечно, есть сходство: у каждого процессора есть функция добавления, верно? Но почти ни у одного процессора нет только одной надстройки — есть варианты с переносом и без него, хранением и чтением из рабочих регистров или оперативной памяти. И как только вы начнете говорить о доступе к памяти, прямом или косвенном, отдельные архитектуры чипов требуют разных языков ассемблера.

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

Я написал язык ассемблера только для нескольких процессоров, да и то не так уж и много, но я считаю, что микроконтроллеры являются самыми дружелюбными. Так что, если вы хотите окунуться в эту воду, возьмите AVR или MSP430. Или, может быть, даже новая горячая штучка — RISC-V. Вы обнаружите, что наборы инструкций настолько малы, что вам придется выполнять большую часть работы самостоятельно. И в этом, в конце концов, смысл изучения языка ассемблера: научиться думать, как кремний. Если вы относитесь к этому как к забавной головоломке, которую нужно решить, вам, вероятно, даже понравится этот опыт.

Первоначальный вопрос [Ала] заключался в том, когда вам следует изучать язык ассемблера: до или после языка более высокого уровня. Я бы сказал, что для 99% наших читателей ответ – прямо сейчас.

ДЕЛИТЬСЯ