Ассемблер

Описание GNU Assembler

Установка инструментария

host# apt-get install binutils

Регистры

RIP (регистр со ссылкой на следующую команду)

Примеры

Вызов функции
Вывод текстовой строки в терминал
Условные переходы на метки
Таблица основных системных вызовов
Примеры на Youtube

Мнемокоды
описание GNU Assembler
Ассемблер для Mac OS X
Стек
Архитектура процессоров Интел
Архитектура процессоров ARMv8

Определения

Изучать язык ассемблера можно путём трансляции понятного исходного кода на языке C в исходный код на языке ассемблера:

host:~$ gcc -S hello_world.c
host:~$
host:~$ ls | grep hello
hello_world.c
hello_world.s
host:~$

Для получения ассемблерного кода с синтаксисом Intel нужно указать опцию -masm=intel (по умолчанию -masm=att; AT&T)

host$ gcc -S -masm=intel test.c

В итоге получается файл hello_world.s, который содержит инструкции для процессора на языке ассемблера, которые можно попробовать разобрать, сопоставив с кодом исходника на C.

Книги по Ассемблеру

Programming ground up (GAS, AT&T) (english)
NASM для ОС Unix (русский)
Компиляторы (принципы, технологии и инструментарий) 2-е издание (русский)
Linux assembly programming (english)
NASM x64 (english)
Reverse Engineering для начинающих (источник https://yurichev.com/)

Сайты

Для новичков
exelab.ru
masm.ru
www.stolyarov.info (русский)
asm.sourceforge.net (english)
Зачем нужно знать всякие низкоуровневые вещи
Написание и отладка кода на ассемблере x86/x64 в Linux
Шпаргалка по основным инструкциям ассемблера x86/x64
Introductory Intel x86: Architecture, Assembly, Applications, & Alliteration

Поддержите проект, если он помог вам

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