Ассемблер в Linux для программистов C: различия между версиями

Содержимое удалено Содержимое добавлено
не хватало одного слова
м →‎Введение: дополнение
Строка 4:
Эта книга ориентирована на программистов, которые уже знают [[w:Си (язык программирования)|Си]] на достаточном уровне. Почему так? Вряд ли, зная только несколько интерпретируемых языков вроде [[w:Perl|Perl]] или [[w:Python|Python]], кто-то захочет сразу изучать [[w:Язык ассемблера|ассемблер]]. Используя Си и ассемблер вместе, применяя каждый язык для определённых целей, можно добиться очень хороших результатов. К тому же программисты Си уже имеют некоторые знания об архитектуре [[w:Процессор|процессора]], особенностях машинных вычислений, способе организации памяти и других вещах, которые новичку в программировании понять не так просто. Поэтому изучать ассемблер после Си несомненно легче, чем после других языков высокого уровня. В Си есть понятие «указатель», программист должен сам управлять выделением памяти в [[w:Куча (нераспределённая память)|куче]], и так далее — все эти знания пригодятся при изучении ассемблера, они помогут получить более целостную картину об архитектуре, а также иметь более полное представление о том, как выполняются их программы на Си. Но эти знания требуют углубления и структурирования.
 
Хочу подчеркнуть, что для чтения этой книги никаких знаний о [[w:Linux|Linux]] не требуется (кроме, разумеется, знаний о том, «как создать текстовый файл» и «как запустить программу в консоли»). Да и вообще, единственное, в чём выражается ориентированность на Linux, — это используемыйиспользуемые синтаксис ассемблера и [[w:ABI]]. Программисты на ассемблере в [[w:DOS|DOS]] и [[w:Microsoft Windows|Windows]] используют синтаксис Intel, но в системах [[w:Unix-подобная операционная система|*nix]] принято использовать синтаксис AT&T. Именно синтаксисом AT&T написаны ассемблерные части ядра Linux, в синтаксисе AT&T компилятор [[w:GNU Compiler Collection|GCC]] выводит ассемблерные листинги и так далее.
 
Большую часть информации из этой книги можно использовать для программирования не только в *nix, но и в Windows, нужно только уточнить некоторые системно-зависимые особенности (например, ABI).
 
=== А стоит ли? ===