ЯЗЫК АССЕМБЛЕРА за 3 МИНУТЫ

Ассемблер — это общее название языков низкого уровня. Код все все равно придется писать человеку, но он уже гораздо ближе к принципам работы машины. Существует немало его вариантов, однако все они принципиально похожи и большинство из них использует одинаковый синтаксис. Поэтому, мы будем называть их общим словом «Ассемблер».

*https://www.youtube.com/watch?v=_-H271NKYgM
**https://300.ya.ru/v_gQlqrB2b

таймкоды

00:00:00 Введение в ассемблер

  • Ассемблер — низкоуровневый язык программирования, упрощающий инструкции для процессора.
  • Создан Кейтлин Бут в 1947 году для универсального электронного компьютера.
  • Использовался для суперкомпьютеров того времени, таких как IBM 7090.

00:00:39 Современное использование ассемблера

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

00:01:05 Структура программы на ассемблере

  • Программа сборки разделена на три части: текстовый раздел, раздел начального символа блока и раздел данных.
  • Текстовый раздел содержит логику программы и точку входа «старт».
  • Раздел начального символа блока содержит переменные.
  • Раздел данных инициализирует константы и данные.

00:02:02 Работа с константами и инструкциями

  • Константы объявляются с помощью меток и команд db и ew.
  • Каждая строка программы содержит инструкцию с оперантами.
  • В язык встроены сотни инструкций.

00:02:12 Работа с регистрами процессора

  • Процессор имеет ограниченное количество регистров для быстрого выполнения операций.
  • Данные вставляются в регистры с помощью команды mov.
  • Для стандартного вывода используется регистр rdi.
  • После выполнения кода необходимо обновить регистр для выхода из системы и указать код ошибки.

00:03:03 Компиляция и компоновка

  • Ассемблер компилирует код в объектный файл.
  • Компоновщик преобразует объектный файл в исполняемый файл.
  • Завершение видео с призывом подписаться на канал.

Расшифровка видео

0:00
ассемблер низкоуровневый язык
0:02
программирования предназначенный для
0:04
упрощения инструкции поступающих
0:05
процессор компьютера Другими словами это
0:08
удобочитаемая абстракция поверх
0:10
машинного кода поэтому программистом не
0:12
нужно вручную считать единицей нули
0:14
первый если костемлера был создан
0:16
кейтлинг будто в 1947 году для
0:19
универсального электронного компьютера в
0:21
течение следующего десятилетия он
0:23
превратился во множество различных
0:24
форматов для питания суперкомпьютеров
0:26
того времени таких как IBM 7090 который
0:29
стоил 20 миллионов долларов в
0:31
сегодняшних долларах написание кода и
0:33
сборка были стандартными пока несколько
0:35
лет спустя не появились языки высокого
0:37
уровня такие как фортран Однако
0:39
ассемблер по-прежнему используется
0:41
сегодня для прямого доступа к голому
0:43
железу и для решения низкоуровневых
0:45
проблем с производительностью часто в
0:47
драйверах устройств и встроенных
0:48
системах а также для запуска
0:50
собственного программного обеспечения в
0:52
браузере через веб-сборку Сложность
0:54
заключается в том что каждый язык
0:56
ассемблера работает только с
0:57
определенной архитектурой процессора как
1:00
ARM для Apple Silicon и raspry или x86
1:04
от чипов Intel для начала вам
1:06
понадобится ассемблер такой как нас нет
1:08
Вайт ассемблер свободный ассемблер для
1:10
архитектуры Intel x86 который
1:13
используется для написания
1:14
16-32 и 64-разрядных программ программа
1:18
сборки разделена на три части текстовый
1:21
раздел содержит фактическую логику
1:22
программы по соглашению он содержит
1:24
точку входа с именем Старт где код
1:26
начинает выполняться далее У нас есть
1:28
раздел начального символа блока который
1:30
содержит переменные которые могут
1:32
меняться на протяжении жизненного цикла
1:34
приложения и наконец в разделе данных мы
1:37
можем инициализировать константы или
1:39
данные которые не изменяются чтобы
1:40
объявить константу как строку мы
1:42
начинаем с метки затем используем db
1:45
чтобы определить байт и поместить строку
1:47
World память сам по себе он ничего не
1:50
делает и для стандартного вывода нам
1:52
также понадобится Его длина мы можем
1:54
использовать приравнять для
1:56
преобразования символов константу знак
1:58
доллара вычитает текущую из метки Hello
2:00
обеспечивая длину строки и теперь на эти
2:03
константы можно ссылаться из метки
2:05
начала в основной программе каждая
2:07
строка содержит инструкцию вместе с
2:08
одним или несколькими оперантами А язык
2:10
встроенный сотня инструкций теперь для
2:13
быстрого выполнения операций процессор
2:15
имеет ограниченное количество регистров
2:16
которые представляют собой 64-битные
2:19
блоки памяти встроенные непосредственно
2:21
процессор а не в оперативную память мы
2:24
можем вставлять данные в регистр с
2:25
помощью команды Move предоставляя
2:27
операнты для имени регистра и данные для
2:30
хранения в данном случае используется
2:32
число 1 потому что он соответствует
2:34
системной записи в Linux далее нам нужно
2:37
сообщать системе куда писать и в этом
2:39
случае мы переместим единицу в рекист
2:41
rdi соответствующий стандартному выводу
2:43
в терминале следующий регистр сохраняет
2:45
сообщение справа вместе с его длиной
2:47
теперь выполните код хранящийся в
2:50
процессоре вызвав ядро операционной
2:52
системы Почти готово но мы получим
2:54
ошибку сегментации если попытаемся
2:56
запустить его на этом этапе обновить
2:58
регистр на 60 для меня выхода из системы
3:01
и укажите нулевой код ошибки в случае
3:03
успеха теперь Используйте ассемблер для
3:05
компиляции или сборки вашего кода в
3:07
объектный файл а затем Используйте
3:09
компоновщик для преобразования его в
3:11
окончательной исполняемый файл это был
3:13
язык ассемблера за три минуты если вы
3:16
хотите увидеть больше коротких видео как
3:18
это Ставьте лайк и подписывайтесь на
3:20
канал

Поделиться: