Найти в Дзене
Old Programmer

Ассемблер для Linux. Введение (книга)

Приветствую всех на моем канале Old Programmer. Здесь много разных материалов по разным вопросам программирования. Продолжаю публиковать книгу по ассемблеру GAS, которой занимаюсь в настоящее время. Порядок мной несколько нарушен в силу того, что и книга пишется не всегда в том порядке, в котором она будет опубликована. Введение Когда говорят об ассемблере (или языке ассемблера), то часто несколько преувеличивают или преуменьшают те или иные особенности этого языка программирования. В действительности, поскольку ассемблер основывается на командах процессора, то следовало бы говорить о разных языках ассемблера. Добавив сюда еще и разных производителей трансляторов, а также особенности реализации в разных операционных системах, мы получим множество ассемблеров. В нашей книге мы ограничиваем себя вполне конкретным процессором архитектуры x86-64 и вполне конкретным транслятором GAS (GNU Assembler) со своим специфическим синтаксисом. Кроме того, мы рассматриваем программирование на асс
Оглавление

Приветствую всех на моем канале Old Programmer. Здесь много разных материалов по разным вопросам программирования.

programmer's notes (python and more) | Дзен

  • Список разделов канала Old Programmer, канала о программировании и программистах
  • Книга "Ассемблер для Linux"

Продолжаю публиковать книгу по ассемблеру GAS, которой занимаюсь в настоящее время. Порядок мной несколько нарушен в силу того, что и книга пишется не всегда в том порядке, в котором она будет опубликована.

Введение

Когда говорят об ассемблере (или языке ассемблера), то часто несколько преувеличивают или преуменьшают те или иные особенности этого языка программирования. В действительности, поскольку ассемблер основывается на командах процессора, то следовало бы говорить о разных языках ассемблера. Добавив сюда еще и разных производителей трансляторов, а также особенности реализации в разных операционных системах, мы получим множество ассемблеров. В нашей книге мы ограничиваем себя вполне конкретным процессором архитектуры x86-64 и вполне конкретным транслятором GAS (GNU Assembler) со своим специфическим синтаксисом. Кроме того, мы рассматриваем программирование на ассемблере для семейства операционных систем Linux. Т.о. когда мы в дальнейшем будем говорить о языке ассемблера, то будем иметь в виду вполне конкретный язык, со своим набором средств программирования, со своим вполне определенным синтаксисом и со своим набором процессорных команд.

И так, какие же крайности можно увидеть в отношении языка ассемблера.

1. Язык ассемблера очень сложен для усвоения.

2. Язык ассемблера сейчас нигде не используется.

Конечно, во введении не стоит углубляться в детали программирования, для этого есть целая книга, поэтому отвечу очень кратко.

Любой язык программирования сложен для усвоения, если собираешься достигнуть на нем достаточно высокого уровня мастерства. Язык ассемблера не сложен, он детален. И если освоить эти детали, то программировать на нем гораздо проще, чем, например, на действительно сложном языке C++. Программирование на языке ассемблера как на любом языке требует умения структурировать программу. Если научиться этому, то писать на нем не составит никакого труда.

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

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

Несколько слов о выборе ассемблера, который сделал автор. Выбор происходил, в действительности в два этапа. В начале был сделан выбор операционной системы, точнее семейство операционных систем Linux. И выбор был сделан по двум причинам: 1. Расширение области использования операционной системы Linux в первую очередь в нашей стране. 2. О программировании на языке ассемблера в Linux всегда писали мало и хотелось восполнить этот недостаток.

Теперь о выборе ассемблера GAS. И здесь выбор обусловлен двумя причинами. 1. GAS является родным ассемблером для семейства операционных систем Linux. 2. Именно этот ассемблер менее всего освещался в литературе по программированию.

И так, когда я кратко объяснил свои побудительные мотивы, я приступаю к самому главному, т.е. к языку ассемблера GAS и программированию на нем.

О чем данная книга

В книгах принято объяснять для чего и для кого они предназначена, а также почему в качестве темы взята именно эта.

1. Почему я занимаюсь ассемблером? Язык ассемблера, программирование на языках низкого уровня всегда меня интересовал. Я написал несколько книг по программированию на языке ассемблера в операционной системе Windows. Мне показалось интересным написать о программировании на ассемблере в операционной системе Linux. Тем более эта операционная система становится все более популярной в нашей стране.

2. Почему в качестве ассемблера взят именно ассемблер GAS или GNU Assembler? На это есть важная причина причины: GAS является родным для всех Unix-подобных операционных систем, т.е. поддерживается в качестве одной из основных утилит, и используется для компилирования и самой операционной системы и при компиляции с использованием gcc (GNU Compiler Collection).

3. Почему в качестве главного процессора в книге рассматриваются процессоры x86-64? В первую очередь потому, что они являются основными для настольных компьютеров, используемых для профессиональной деятельности, в том числе и программистов.

4. Для кого данная книга? Я бы разделил возможных читателей данной книги на три категории: а. Будущие программисты на языке ассемблера. б. Будущие программисты. Любого программиста обогащают знания в области низкоуровневого программирования. в. Все те, кому интересно как происходит выполнение программ на низком уровне и как связана архитектура компьютера с его программным управлением.

-- > Глава 1. Параграф 1.1.

Подписываемся на мой канал Old Programmer и пишем свои комментарии.