Программирование на ассемблере на платформе х86-64

Программирование на ассемблере на платформе х86-64
Автор: Аблязов Руслан Зуфярович
Год: 2011
ISBN: 978-5-94074-676-8
Страниц: 301
Язык: Русский
Формат: PDF +CD
Размер: 10 Мб

Download

В данной книге речь идёт о работе процессора в двух его основных режимах: защищённом режиме и 64-битном, который также называют long mode («длинный режим»). Также помимо изложения принципов и механизмов работы процессора в защищённом и 64 -битном режимах, речь пойдёт о программировании на ассемблере в операционных системах семейства Windows, как в 32-битных, так и 64-битных версиях. Рассматривается не только разработка обычных приложений для операционных систем Windows, но и разработка драйверов на ассемблере. При написании книги уделялось большое внимание именно практической составляющей, т.е. изложение материала идёт только по делу и только то, что необходимо знать любому системному и низкоуровневому программисту. Последний раздел книги посвящён принципам работы многопроцессорных систем, а также работе с расширенным программируемым контроллером прерываний (APIC).
Издание предназначено для системных и низкоуровневых программистов, а также для студентов и преподавателей технических специальностей высших и средне-специальных учебных заведений.

+

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

Изучаем ассемблер подробнее

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


Введение в защищённый режим

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

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

После включения или аппаратного сброса (перезагрузки) процессор находится в режиме реальных адресов. Это и есть 16-битный режим работы процессора. В этом режиме используется 20-битная система адресации, с помощью которой можно адресовать только 1 Мб физической памяти. В режиме реальных адресов работает операционная система MS-DOS. Теперь забудем о режиме реальных адресов и сконцентрируемся на защищённом режиме, который даёт нам возможность использовать ресурсы компьютера (память, производительность, защита и др.) на полную мощность.

Программирование в Win64

В предыдущей главе мы говорили о 64-битном режиме процессора. В главе 3 речь шла о программировании на ассемблере в 32-битных операционных системах семейства Windows. Теперь, после изучения архитектуры работы процессора в 64-битном режиме, настало время изучить программирование в 64-битных системах Windows, или в Win64. Первые 64-битные версии Windows появились у систем Windows XP и Windows 2003 Server, причем почти одновременно, в 2005 году. Следующие версии операци-онных систем Windows (2008 Server, Vista и др.) были как 32-битными, так и 64-бит-ными. Вообще 64-битные версии есть только у систем с архитектурой WinNT (по понятным причинам у систем Win9x 64-битных версий нет).

Многопроцессорные системы

Работа с APIC

Итак, мы изучили два основных режима процессора, научились переключать режимы процессора. Но прогресс не стоит на месте – сейчас почти каждый компьютер оснащён процессором с несколькими ядрами, а серверы и вовсе оснащены несколькими процессорами. В настоящей главе речь пойдёт о межпроцессорном взаимодействии.

Основой межпроцессорного взаимодействия является расширенный программируемый контроллер, или APIC (Advanced Programmable Interrupt Controller). Поэтому перед изучением межпроцессорного взаимодействия необхо-димо изучить работу с APIC.