Андрей Жуков | Ассемблер и программная модель процессоров x86/64 + Code (2024) [PDF]
Автор: Андрей Жуков
Издательство: БХВ-Петербург
Серия: Профессиональное программирование
ISBN: 978-5-9775-1761-4
Жанр: Ассемблер, Низкоуровневое программирование, Программирование
Формат: PDF
Качество: Изначально электронное (ebook)
Иллюстрации: Отсутствуют
Описание:Книга является практическим пособием по программной модели процессоров i80x86/64. Простейшие элементы этой модели (переменные, константы, методы адресации и система команд) изучаются с помощью ассемблера a86, отладчика d86. 32-битные возможности i80x86, включая защищенный режим, вентили, исключения и прерывания, привилегии, страничное преобразование, исключения, LDT и TSS, а также 64-битные режимы процессора x64 с исключениями и прерываниями в long mode изучаются с использованием ассемблера nasm.
Электронный архив на сайте издательства содержит исходные тексты примеров и необходимые для работы файлы.
Есть в релизе.
Предисловие .............................................................................................................................. 9
Примечания ............................................................................................................................... 11
ЧАСТЬ I. РЕАЛЬНЫЙ РЕЖИМ ........................................................................................................ 13
Глава 1. Установка программ ....................................................................................................... 15
Установка и настройка Bochs ....................................................................................................... 15
Формирование образа диска ......................................................................................................... 16
Настройка отладочного варианта Bochs ...................................................................................... 18
Примечания ................................................................................................................................ 18
Глава 2. Программирование данных ........................................................................................... 21
Вызов a86 ................................................................................................................................... 21
Программирование последовательностей ................................................................................... 22
Программирование bmp-файла..................................................................................................... 26
Примечания ................................................................................................................................. 29
Глава 3. Данные, имена и типы...................................................................................................... 31
Структура программы ................................................................................................................... 31
Директивы определения данных .................................................................................................. 32
Обозначение чисел ........................................................................................................................ 37
Символические обозначения чисел, выражения .............................................................................. 38
Переменные и метки...................................................................................................................... 40
Типы имен ...................................................................................................................................... 41
Типы и выражения ......................................................................................................................... 43
Алгоритм трансляции .................................................................................................................... 46
Повторное определение имен ....................................................................................................... 50
Локальные имена ........................................................................................................................... 51
Предопределенные имена ............................................................................................................. 52
Имя end ........................................................................................................................................... 52
Примечания .................................................................................................................................... 54
Глава 4. Способы адресации ........................................................................................................... 57
Данные процессора ........................................................................................................................ 57
Обозначения операндов машинных команд ................................................................................ 59
Способы адресации операндов ..................................................................................................... 60
Регистровая и непосредственная адресация ........................................................................ 60
Адресация данных в памяти.................................................................................................. 61
Прямая адресация ......................................................................................................... 61
Косвенная адресация .................................................................................................... 63
Ограничение на адресацию операндов в памяти ................................................................ 67
Примечания .......................................................................................................................... 68
Глава 5. Система команд i8086 ......................................................................................... 69
Способы адресации операндов ............................................................................................... 69
Регистровая, непосредственная и прямая адресация .......................................................... 70
Косвенная адресация ............................................................................................................. 71
Косвенная адресация по значению одного регистра .................................................................. 71
Косвенная адресация по сумме значений двух регистров .......................................................... 71
Обзор системы команд ............................................................................................................ 71
Команды пересылки .............................................................................................................. 72
Арифметические команды .................................................................................................... 73
Логические команды ............................................................................................................. 74
Команды сдвигов и вращений .............................................................................................. 74
Команды передачи управления ............................................................................................. 75
Адресация в командах передачи управления .......................................................................... 76
Команды условных переходов ............................................................................................... 77
Воздействие команд на флаги ............................................................................................... 79
Строковые команды ............................................................................................................... 82
Примечания ............................................................................................................................ 83
Глава 6. Программирование циклов .......................................................................................... 85
Поиск в массиве байтов ................................................................................................................ 85
Поиск в массиве слов .................................................................................................................... 87
Поиск байта со значением больше заданного ............................................................................. 88
Подсчет байтов в заданном диапазоне значений ........................................................................ 89
Алгоритмическое решение.................................................................................................... 89
Табличное решение ............................................................................................................... 90
Примечания ............................................................................................................................... 92
Глава 7. Примеры программ ........................................................................................................ 93
Обработка данных на уровне битов ............................................................................................. 93
Программирование ввода-вывода ................................................................................................ 95
Опережающие ссылки ............................................................................................................... 98
Упаковка четырехбитовых кодов ............................................................................................... 100
Задания на составление программ ............................................................................................. 102
Задания первого уровня сложности ........................................................................................... 102
Варианты заданий .................................................................................................................... 102
Задания второго уровня сложности ............................................................................................ 104
Примечания .................................................................................................................................. 108
Глава 8. Математический сопроцессор ........................................................................................... 111
Окно FPU в d86 ............................................................................................................................ 111
Загрузка и выгрузка данных ....................................................................................................... 112
Порядок двуместных операций .................................................................................................. 114
Организация ветвлений ............................................................................................................... 117
Признаки в слове состояния ....................................................................................................... 118
Настройки FPU ............................................................................................................................ 120
Форматы действительных чисел ................................................................................................ 121
Внутренний формат данных FPU ....................................................................................... 122
Стандартные форматы вещественных чисел ..................................................................... 124
Операции FPU ....................................................................................................................... 125
Пересылки ............................................................................................................................ 126
Загрузка данных .......................................................................................................... 126
Команды выгрузки ...................................................................................................... 128
Команда обмена .......................................................................................................... 130
Арифметические операции ................................................................................................. 130
Основные арифметические операции ....................................................................... 131
Операции над знаковым битом .................................................................................. 132
Округление до целого ................................................................................................. 133
Получение остатка от деления ................................................................................... 134
Извлечение корня ....................................................................................................... 135
Масштабирование ....................................................................................................... 135
Операции сравнения и тестирования ........................................................................ 135
Тригонометрические операции .......................................................................................... 137
Возведение в степень ........................................................................................................... 137
Возведение числа 2 в целую степень ........................................................................ 138
Возведение числа 2 в дробную степень .................................................................... 138
Вычисление целой и дробной частей значения степени ............................................. 139
Возведение числа 2 в произвольную степень ............................................................. 139
Вычисление логарифмов ............................................................................................ 139
Команды управления ........................................................................................................... 141
Сохранение и восстановление состояния .......................................................................... 142
Задачи ................................................................................................................................... 143
Примечания ............................................................................................................................ 145
Глава 9. Сегменты.................................................................................................................... 149
Эффективный адрес ................................................................................................................ 150
Базовый адрес и сегментные регистры ...................................................................................... 151
Перепрограммирование сегментных регистров .......................................................................... 154
Регистр es .............................................................................................................................. 154
Регистр ss .............................................................................................................................. 156
Регистр cs .............................................................................................................................. 157
Регистр ds ............................................................................................................................. 159
Повторный запуск резидентной программы .............................................................................. 160
Программные секции............................................................................................................... 162
Префикс переназначения сегмента .......................................................................................... 167
Задачи ........................................................................................................................................... 172
Примечания .................................................................................................................................. 173
Глава 10. Исключения ................................................................................................................... 177
Таблица векторов ......................................................................................................................... 177
Векторные вызовы ....................................................................................................................... 178
Исключения и прерывания ......................................................................................................... 185
Ассемблер nasm ........................................................................................................................... 189
Отладочные исключения ............................................................................................................. 193
Примечания .................................................................................................................................. 196
Глава 11. Внешние прерывания .................................................................................................... 197
Системный таймер ....................................................................................................................... 197
Клавиатура ................................................................................................................................... 201
Часы реального времени ............................................................................................................. 203
Примечания .................................................................................................................................. 203
Глава 12. 32-битовые данные и адреса..................................................................................... 205
Префиксы размерности операнда и адреса ............................................................................... 205
Косвенная адресация через 32-битовые регистры .................................................................... 211
Новые команды .................................................................................................................... 213
Примечания .......................................................................................................................... 215
ЧАСТЬ II. ЗАЩИЩЕННЫЙ РЕЖИМ ............................................................................................ 217
Глава 13. Код в защищенном режиме ...................................................................................... 219
Опыты с дескрипторами и защитой памяти .............................................................................. 225
Первые опыты с привилегиями .................................................................................................. 226
Переключение сегментов кода и вентили вызова ..................................................................... 227
Обратное переключение режима ................................................................................................ 231
Примечания .................................................................................................................................. 232
Глава 14. Данные и стек................................................................................................................. 235
Дескрипторы данных ................................................................................................................... 235
Дескриптор стека ......................................................................................................................... 238
Режим unreal ................................................................................................................................ 241
Адресная линия A20 .................................................................................................................... 242
Привилегии сегментов данных ................................................................................................... 244
Примечания .................................................................................................................................. 250
Глава 15. Исключения и прерывания ....................................................................................... 253
Дескрипторы прерываний и исключений .................................................................................. 253
Коды ошибок для исключений ................................................................................................... 258
Внешние прерывания .................................................................................................................. 259
Поле IOPL в регистре флагов ..................................................................................................... 266
Примечания .................................................................................................................................. 267
Глава 16. LDT и TSS ................................................................................................................... 269
Дескрипторы LDT ....................................................................................................................... 269
Программное переключение контекста ..................................................................................... 272
Дескрипторы TSS ........................................................................................................................ 276
Примечания .................................................................................................................................. 285
Глава 17. Преобразование адресов ............................................................................................ 287
Первый вариант трансляции адресов ......................................................................................... 288
Вариант PSE ................................................................................................................................. 292
Вариант PAE................................................................................................................................. 295
Плоская модель памяти ............................................................................................................... 301
Примечания .................................................................................................................................. 305
Глава 18. Привилегии ................................................................................................................ 307
Изменение уровня привилегий ................................................................................................... 307
Вызов привилегированной процедуры ...................................................................................... 311
Обращение к портам ввода-вывода ............................................................................................ 317
Привилегии при страничном отображении ............................................................................... 318
Примечания .................................................................................................................................. 320
ЧАСТЬ III. 64-БИТОВЫЕ РЕЖИМЫ ............................................................................................ 321
Глава 19. Переход в режим совместимости ............................................................................... 323
Переход в режимы long ............................................................................................................... 323
Особенности режима совместимости ........................................................................................ 328
Примечания .................................................................................................................................. 330
Глава 20. Переход в 64-битовый режим .................................................................................... 331
Загрузчик ld0 ................................................................................................................................ 331
Применимость 64-битовых данных............................................................................................ 339
Примечания .................................................................................................................................. 339
Глава 21. Особенности 64-битового режима .............................................................................. 341
64-битовые операнды .................................................................................................................. 342
Относительная адресация и перемещаемость ........................................................................... 345
Селекторы fs и gs ......................................................................................................................... 349
Системные вызовы ...................................................................................................................... 352
Сегмент задачи в 64-битовом режиме ....................................................................................... 357
Обработка прерываний в 64-битовом режиме .......................................................................... 359
Примечания .............................................................................................................................. 370
Послесловие ............................................................................................................................. 373
ПРИЛОЖЕНИЯ ........................................................................................................................... 375
Приложение 1. Компиляция Bochs ............................................................................................... 377
Подготовка к компиляции для Windows и Linux ............................................................................ 377
Компиляция для Windows ........................................................................................................... 378
Компиляция для Linux ................................................................................................................. 379
Примечания ............................................................................................................................... 380
Приложение 2. Инструментальные программы FreeDOS .................................................................. 381
Файловый менеджер .................................................................................................................... 381
Текстовый редактор edit .............................................................................................................. 382
Редактор памяти e32 .................................................................................................................... 382
Форматы отображения данных в d86 ............................................................................................. 383
Приложение 3. Дополнительные опыты с FPU .................................................................................. 384
Команда fisttp ............................................................................................................................... 384
Формат BCD ................................................................................................................................. 385
Прерывания от i80x87 ................................................................................................................. 385
Синхронизация процессора и сопроцессора ................................................................................... 388
Расширение MMX .......................................................................................................................... 389
Примечания .................................................................................................................................. 392
Приложение 4. Ошибки в a86/a386 ................................................................................................ 393
Ошибки в a86 ............................................................................................................................... 393
Ошибки в a386 ............................................................................................................................. 394
Приложение 5. Описание электронного архива ............................................................................... 395
Список источников ........................................................................................................................ 397
Предметный указатель .................................................................................................................. 398
Скриншоты:
Время раздачи: с 10 до 20 (минимум до появления первых 3-5 скачавших)