В этой короткой вводной лекции мы разберемся как устроена архитектура компьютера, и почему если вы хотите стать профессионалом в программировании, вам необходимо знать Язык Ассемблера
Для начала скажу, что Ассемблер и Язык Ассемблера — это немного разные вещи. Но чтобы понять разницу, нужно понимать, как устроена Архитектура компьютера.
Архитектура компьютера
В этой части мы не будем сильно углубляться в строение, и лишь разберем основу основ, то как составные части компьютера взаимодействуют между собой
Большинство компьютеров имеет схему показанную выше или подобную ей. В этой схеме есть CPU (Процессор) который производит все вычисления. Также процессору нужна оперативная память или по другому ОЗУ (Оперативное запоминающее устройство) - в которой во время работы компьютера хранятся программы (выполняемый машинный код) , а также входные, выходные и промежуточные данные. Процессор не обращается на прямую в ОЗУ, а делает это через северный мост.
Так же через северный мост процессор обращается к графическому адаптеру (Видеокарте). Если же CPU хочет записать какие-то данные на HDD или SSD, он передает это на северный мост, который в свою очередь передает это на южный мост, который уже и обращается к дискам. Делается это для того чтобы процессор не простаивал т.к. HDD (Жесткий диск) или SSD (Твердотельный накопитель) записывают данные гораздо дольше, чем процессор делает вычисления. Еще через Южный мост происходит обращения к устройствам ввода (Клавиатура, мышь, микрофон и т.д.) и вывода (Монитор, динамик, принтер и т.д.)
Скорей всего у вас возник вопрос: "Для чего нужен северный и южный мост? Почему процессор не может выполнять их функции сам?".
Дак вот всё достаточно просто, дело в нагреве. Если вы замерите температуру в своем компьютере, то увидите, что процессор и северный мост самые горячие комплектующие. И для того чтобы не допускать перегрева, функции по передачи данных и отправке их обратно, были переданы северному мосту. Хотя современные процессоры Intel взяли на себя функции северного моста. На этом оооочень краткий экскурс по устройству компьютера закончен перейдем к Ассемблеру.
Ассемблер
Чаще всего, когда люди говорят про ассемблер они говорят про Язык Ассемблера
Давайте разберемся в чем разница
Язык Ассемблера - машинно-ориентированный язык программирования низкого уровня. Представляет собой систему обозначений, используемую для представления в удобно читаемой форме программ, записанных в машинном коде.
Проще говоря это почти машинный код, написанный словами понятными человеку. Но в этом то и основная проблема так как основной способ передачи информации у людей - это текст, а у компьютеров числа. И тут на помощь приходит Ассемблер, который переводит слова понятные человеку в цифры понятные компьютеру.
Ассемблер - транслятор программы из текста на языке ассемблера, в программу на машинном языке.
Язык Ассемблера по началу очень пугает особенно если вы раньше программировали на языках более высокого уровня. И кажется зачем его изучать так как он очень старый (первый ассемблер появился в 1949 году, но одной из популярных остается версия tasm от 1996 года), и есть более понятные ЯП (язык программирования) как C++ или даже Python. Но те возможности, которые дает его знание стоят потраченного на изучение и программирование времени:
- Возможность максимально полного использования всех особенностей аппаратной платформы позволяет, писать самый быстрый и компактный код из всех возможных для данного процессора.
- Возможность непосредственного доступа к аппаратуре, и, в частности, портам Ввода-вывода конкретным адресам памяти, регистрам процессора
- малый объём памяти, требуемый для программы
То есть мы можем сами указывать в какую ячейку памяти будут записаны данные, какие данные и откуда получит процессор, можно даже музыку на динамике BIOS писать. Мы буквально можем командовать компьютером как маленьким ребенком. Тот, кто знает ассемблер имеет полную власть над компьютером.
А вот как писать на нем мы уже разберем в следующей статье (Спойлер: очень просто)