Архитектура вычислительных систем и Ассемблер с приложением методических указаний к лабораторным работам. Учебное пособие

Архитектура вычислительных систем и Ассемблер с приложением методических указаний к лабораторным работам. Учебное пособие

Архитектура вычислительных систем и Ассемблер с приложением методических указаний к лабораторным работам. Учебное пособие

Автор: Александра Игоревна Кононова , Лариса Геннадьевна Гагарина
Дата выхода: 2024
Издательство: ООО "Солон-пресс"
Количество страниц: 368
Размер файла: 48,7 МБ
Тип файла: PDF
Добавил: codelibs
 Проверить на вирусы

Введение. . . . . . . . . . . . . . . . . . . 3
Глава 1. Понятие вычислительной системы (ВС) 5
1.1. Терминология . . . . . . . . . . . . . . 5
1.2. Структурная декомпозиция вычислительной системы 6
1.2.1. Единицы измерения . . . . . 10
1.2.2. Порядок следования байтов . . . 11
1.2.3. Цикл выполнения команды . . . 14
1.2.4. Расположение программ и данных 17
1.2.5. Память. . . . . . . . . . . 19
1.2.6. Регистры. . . . . . . . . . . 21
1.3. Иерархическая декомпозиция ВС . . 22
1.3.1. Цифровой логический уровень. 22
1.3.2. Микроархитектурный уровень. 23
1.3.3. Уровень архитектуры команд . 24
1.3.4. Уровень операционной системы 25
1.3.5. Уровень ассемблера. . 26
1.3.6. Языки высокого уровня . . . . 27
1.4. История . . . . . . . . . . . . . . 29
1.4.l. Развитие вычислительной техники 29
1.4.2. Операционные системы 38
Контрольные вопросы . . . . . . . . . . 40
Глава 2. Представление данных . . . . . . 41
2.1. Качественные и количественные данные. 41
2.2. История чисел. . . . . . . . . . . . . 43
2.3. Позиционные системы счисления . . . . 46
2.3.1. Перевод натуральных чисел между позиционными системами счисления 47
2.3.2. Экономичность системы счисления . . . . . . 49
2.3.3. Нецифровые символы в представлении чисел . . 50
2.3.4. Позиционное представление вещественных чисел 51
2.4. Двоичное представление беззнаковых целых чисел . . 58
2.4.1. Восьмеричное и шестнадцатеричное представление 59
2.4.2. Беззнаковая арифметика в вычислительных системах 62
2.5. Представление отрицательных чисел
2.5.1. Величина со знаком .
2.5.2. Код с избытком. . . . . . . .
2.5.3. Дополнительный код . . . . .
2.5.4. Знаковая арифметика в вычислительных системах
2.6. Альтернативная арифметика . . . . .
2.6.1. Двоично-десятичная арифметика.
2.6.2. Модулярная арифметика .
2.6.3. Арифметика с насыщением
2.7. Битовые операции . . . . . .
2.7.1. Поразрядные операции .
2.7.2. Расширение целых чисел.
2.7.3. Битовые сдвиги. . . . .
2.8. Представление вещественных чисел . 89
2.8.1. Представление вещественных чисел с фиксированной запятой 89
2.8.2. Представление вещественных чисел с плавающей запятой 92
Контрольные вопросы . . . . . . . . . . 101
Глава 3. Архитектура команд семейства х86 102
3.1. Развитие линейки х86 и режимы работы 102
3.1.1. История семейства х86 . . 103
3.1.2. Режимы работы процессора 106
3.2. Сегменты памяти . . . . . . . 108
3.2.1. Код и статические данные. 110
3.2.2. Куча . 111
3.2.3. Стек. . . . . . . . . . . 112
3.3. Регистры . . . . . . . . . . . 115
3.3.1. Регистры общего назначения, доступные в тридцатидвухбитном режиме 116
3.3.2. Регистры общего назначения, доступные в шестидесятичетырёхбитном режиме 117
3.3.3. Специальные регистры и регистры расширений 119
3.4. Математический сопроцессор (FPU х87). 120
3.4.1. Регистры FPU. . 120
3.4.2. Исключения FPU . . . . . . 123
3.5.Флши. . . . . . . . . . . . . . 126
3.5.1. Флаги основного процессора. 126
3.5.2. Флаги FPU . . . . . . . . . 129
3.6. Структура команды и методы адресации 131
3.6. 1. Методы адресации . . . . . . . . 131
3.6.2. Структура команды. . . . . . . . 132
3.6.3. Общие для тридцатидвухбитного и шестидесятичетырёхбитного режимов сведения об адресации 133
3.6.4. Адресация в тридцатидвухбитном режиме . . . . . . . . . 136
3.6.5. Расширение регистров в шестидесятичетырёхбитном режиме 137
3.6.6. Операнды и адресация в шестидесятичетырёхбитном режиме 139
3.6.7. Адресация относительно указателя команды 140
Контрольные вопросы . . . . . . 141
Глава 4. Связь уровней абстракции. 142
4.1. Компиляция. . . . . . . . . 142
4.1.1. Инструменты разработки 143
4.1.2. Этапы компиляции 146
4.1.3. Особенности GCC. 148
4.2. Препроцессор . . . . . 152
4.2. 1. Включение файла . 153
4.2.2. Условная компиляция. 154
4.2.3. Макросы . . . . . . . 155
4.3. Ассемблерные вставки в код С++ . 159
4.3. 1. Синтаксис ассемблерных вставок в GCC 159
4.3.2. Расширенная форма. . . . . . . . . . 161
4.3.3. Практическое использование параметров. 167
4.3.4. Ограничения на расположение операнда 170
4.3.5. Модификаторы параметров . . . . . . . 171
Контрольные вопросы . . . . . . . . . . . . . . 172
Глава 5. Синтаксис н команды GNU AssemЫer х86 . 173
5.1. Особенности GNU AssemЫer . 173
5.1.1. Общие правила . . . 174
5.1.2. Основные директивы 175
5.1.3. Порядок операндов . 178
5.1.4. Адресация операндов 179
5.1.5. Размер операндов команды 182
5.1.6. Мнемоники. . 184
5.1.7. Префиксы . . . 185
5.2. Основные команды. . 185
5.2. 1. Общие команды. 186
5.2.2. Передача управления, вызов и возврат 190
5.2.3. Обнуление регистра. . . . . . . . . 194
5.2.4. Команды целочисленной арифметики 194
5.2.5. Битовые операции
5.2.6. Флаги . . . . . .
5.2.7. Условные команды
5.3. Команды FPU . . . . .
5.3.1. Внутреннее представление чисел.
5.3.2. Возможные форматы экспорта-импорта
5.3.3. Общие команды
5.3.4. Загрузка, выгрузка и пересылка данных. 214
5.3.5. Основные арифметические команды . . 221
5.3.6. Дополнительные арифметические и трансцендентные команды. 226
5.3.7. Сравнение вещественных чисел . . . . 228
Контрольные вопросы . . . . . . . . . . . . . 232
Глава 6. Программирование на языке Ассемблера 233
6. 1. Структура программы на ассемблере . . . . 233
6.1.l. Программирование с использованием libc. 234
6.1.2. Программирование без libc . . 237
6.2. Подпрограммы и функции . . . . . . 239
6.2.1. Требования к вызовам функций . 240
6.2.2. Механизм вызова подпрограммы. 241
6.2.3. Соглашения о вызовах . . . . . . 245
6.2.4. Описание функций на ассемблере 249
6.2.5. Импорт функций из модулей на ассемблере в код на С++ 252
6.2.6. Импорт функций из модулей на С++ в код на ассемблере 254
6.2.7. Искажение имён при компиляции . . . 255
6.2.8. Системные вызовы . . . . . . . . . . 259
6.3. Программирование нелинейных алгоритмов . 261
6.3.1. Условие с операторами в одной ветви 261
6.3.2. Условие с операторами в двух ветвях 263
6.3.3. Цикл. . . . . . . . . . . . . . . 267
6.4. Взаимодействие со структурами данных. 270
6.4.1. Массивы . . . . . . . 270
6.4.2. Структуры и объекты . . . . . . . 277
Контрольные вопросы . . . . . . . . . . . 282
Глава 7. Программирование на языке в ысокого уровня: С++ 283
7.1. Структура программы 284
7.2. Типы данных . . . . . . 285
7.2.1. Целые типы . . . . . 285
7.2.2. Вещественные типы . 288
7.2.3. Специальные типы 289
7.2.4. Указатели . . . . . 290
7.3. Приведение типов
7.4. Литералы С++ . .
7.4.1. Целые ...
7.4.2. Вещественные
7.4.3. Строки. . . .
7.5. Средства автоматизации С++ .
7.5.1. Шаблоны С++ ..... .
7.5.2. Макросы препроцессора С/С++
7.6. Ввод-вывод . . . . . . . . . .
7.6.1. Ввод-вывод в поток . . . .
7.6.2. Ввод-вывод с помощью libc
7.7. Отладочная печать ...... .
7.7.1. Средства исследования переменных
7.7.2. Автоматизация отладочной печати .
Контрольные вопросы
Заключение . . . . . . . . . . . . . . . . .
Приложение А. Лабораторный практикум GNU AsseшЫer
Требования к выполнению лабораторных работ
Л 1. Представление данных в ЭВМ . .
Л2. Отладка кода . . . . . . . . . . . . . .
Л3. Модули и функции на ассемблере .....
Л4. Использование ассемблерных вставок в программах на С++.
Л5. Программирование FPU . . . . . . . . . . . . . . . . .
Л6. Программирование ветвящихся и циклических алгоритмов .
Л7. Использование массивов
Приложение Б. Коды ASCII
Литература
Предметный указатель.
Список таблиц
Список иллюстраций

 В пособии представлен систематизированный курс одной из основной дисциплин специализированной подготовки бакалавров по направлениям 09.03.04 "Программная инженерия" и 01.03.04 "Прикладная математика" с точки зрения прикладного программирования и парадигмы кроссплатформенности.
 Рассмотрены основы архитектуры вычислительных систем как системной дисциплины. Представлен обзор архитектуры популярных процессоров семейства x86, в том числе шестидесятичетырёхбитных, представление основных типов данных в памяти компьютера, основные команды набора x86 и синтаксис AT&T. Обозначена проблематика прикладного кроссплатформенного программирования, объединяющего язык высокого уровня и язык Ассемблера.
 Строгий стиль изложения сопровождается доступными для понимания пояснениями и многочисленными примерами, а также контрольными вопросами к каждой главе, необходимыми для глубокого усвоения материала. Книга адресована студентам технических специальностей, соискателям степени бакалавра по указанным направлениям, слушателям институтов повышения квалификации, может быть использована для самообразования.


 Приложение А содержит методические указания к лабораторным работам.


Похожее:

Список отзывов:

Нет отзывов к книге.