LibCoder

Архитектура ЭВМ и язык ассемблера

1C Agda Assembler
Архитектура ЭВМ и язык ассемблера
Дата выхода: 2024
Издательство: Самиздат
Количество страниц: 291
Размер файла: 5,7 МБ
Тип файла: PDF
Добавил: LibCoder
Оглавление
1 Лекция 1. Введение. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ....101.1 Цель курса . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ....101.2 Несколько проблем программирования . . . . . . . . . . . . . . . ....101.3 Зачем нужен язык ассемблера . . . . . . . . . . . . . . . . . . . . ....141.4 История первых компьютеров . . . . . . . . . . . . . . . . . . . . ....141.5 Архитектура фон Неймана . . . . . . . . . . . . . . . . . . . . . . ....151.6 Другие варианты архитектур . . . . . . . . . . . . . . . . . . . . . ....171.7 Модельный цикл работы ЭВМ . . . . . . . . . . . . . . . . . . . . ....181.8 Ключевые понятия и термины . . . . . . . . . . . . . . . . . . . . ....192 Лекция 2. Машина, на которой работает пользовательская программа . . ....212.1 Машина, на которой работает пользовательская программа . . . . ....212.2 Порядок размещения байт в памяти . . . . . . . . . . . . . . . . . ....232.3 Команда сложения . . . . . . . . . . . . . . . . . . . . . . . . . . . ....252.4 Интерпретация конструкции с командой add с незаданным размером 252.5 Команда пересылки . . . . . . . . . . . . . . . . . . . . . . . . . . ....262.6 Типы адресации . . . . . . . . . . . . . . . . . . . . . . . . . . . . ....262.7 IA-32 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ....272.8 Примеры . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ....283 Лекция 3. Устройство ассемблерной программы . . . . . . . . . . . . . . ....313.1 Пример . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ....313.2 Обратный путь . . . . . . . . . . . . . . . . . . . . . . . . . . . . ....353.3 Устройство ассемблерной программы . . . . . . . . . . . . . . . . ....373.4 Пример заполнения секции .data . . . . . . . . . . . . . . . . . . . ....393.5 Секция .text . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ....393.6 Основные арифметические команды . . . . . . . . . . . . . . . . ....404 Лекция 4. Регистр EFLAGS. . . . . . . . . . . . . . . . . . . . . . . . . . ....434.1 Регистр EFLAGS . . . . . . . . . . . . . . . . . . . . . . . . . . . ....434.2 Арифметические FLAGи . . . . . . . . . . . . . . . . . . . . . . . ....444.3 Переполнение при сложении двух беззнаковых чисел . . . . . . . ....444.4 FLAG OF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ....444.5 Изменение естественного порядка выполнения программы . . . . ....464.6 Коды . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ....494.7 Варианты сравнения . . . . . . . . . . . . . . . . . . . . . . . . . ....504.8 Регистр EFLAGS и инструкции . . . . . . . . . . . . . . . . . . . ....514.9 Обратная задача . . . . . . . . . . . . . . . . . . . . . . . . . . . . ....514.10 Просмотр содержимого исполняемого файла . . . . . . . . . . . . ....545 Лекция 5. Вызов функции . . . . . . . . . . . . . . . . . . . . . . . . . . . ....555.1 Вызов функции . . . . . . . . . . . . . . . . . . . . . . . . . . . . ....555.2 Аппаратный стек AI-32 . . . . . . . . . . . . . . . . . . . . . . . . ....565.3 Команда push . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ....565.4 Команда pop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ....585.5 Языки программирования (ЯП), базирующиеся на стеке вызовов ....595.6 Порядок вызова функции . . . . . . . . . . . . . . . . . . . . . . . ....605.7 Стек фреймов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ....625.8 Организация фрейма в IA-32/Linux . . . . . . . . . . . . . . . . . ....646 Лекция 6. Система команд. . . . . . . . . . . . . . . . . . . . . . . . . . . ....696.1 Группы команд . . . . . . . . . . . . . . . . . . . . . . . . . . . . ....696.2 Команда LEA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ....706.3 Косвенная адресация . . . . . . . . . . . . . . . . . . . . . . . . . ....716.4 Реализация стрелки Пирса . . . . . . . . . . . . . . . . . . . . . . ....726.5 Сдвиги . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ....746.6 Форматы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ....766.7 Команды вращения . . . . . . . . . . . . . . . . . . . . . . . . . . ....776.8 Обратная задача . . . . . . . . . . . . . . . . . . . . . . . . . . . . ....796.9 Сложение 64-разрядных чисел на 32 разрядных регистрах . . . . ....796.10 Умножение 64 разрядных чисел на 32 разрядных регистрах . . . ....807 Лекция 7. Как организована передача управления. . . . . . . . . . . . . . ....837.1 Сравнение беззнаковых чисел . . . . . . . . . . . . . . . . . . . . ....837.2 Сравнение знаковых чисел . . . . . . . . . . . . . . . . . . . . . . ....837.3 Сравнение: со знаком и без . . . . . . . . . . . . . . . . . . . . . . ....847.4 Реализация операндов с помощью известных команд . . . . . . . ....867.5 Условная передача данных . . . . . . . . . . . . . . . . . . . . . . ....897.6 Конвейер – совмещение разных действий в один момент времени ....907.7 Оператор do-while . . . . . . . . . . . . . . . . . . . . . . . . . . . ....937.8 Оператор while . . . . . . . . . . . . . . . . . . . . . . . . . . . . ....937.9 Оператор for . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ....948 Лекция 8. Оператор управления switch . . . . . . . . . . . . . . . . . . . . ....998.1 Обратная задача . . . . . . . . . . . . . . . . . . . . . . . . . . . . ....998.2 Оператор управления switch . . . . . . . . . . . . . . . . . . . . . ....1008.3 Duff’s Device . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ....1048.4 Обратная задача . . . . . . . . . . . . . . . . . . . . . . . . . . . . ....1128.5 Указатели . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ....1148.6 Массивы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ....1159 Лекция 9. Многомерные массивы. . . . . . . . . . . . . . . . . . . . . . . ....1169.1 Массивы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ....1169.2 Две обратные задачи . . . . . . . . . . . . . . . . . . . . . . . . . ....1179.3 Выделение памяти . . . . . . . . . . . . . . . . . . . . . . . . . . ....1199.4 Доступ к строкам . . . . . . . . . . . . . . . . . . . . . . . . . . . ....1209.5 Оптимизация доступа к многомерным массивам. . . . . . . . . . ....1229.6 Обращение к элементу . . . . . . . . . . . . . . . . . . . . . . . . ....1229.7 Оптимизация доступа к элементам массива . . . . . . . . . . . . ....12310 Лекция 10. Структуры . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ....12610.1 Повторение . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ....12610.2 Структуры . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ....12610.3 Выравнивание полей в структурах . . . . . . . . . . . . . . . . . . ....12710.4 Объединения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ....13010.5 Порядок байт . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ....13110.6 Битовые поля . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ....13110.7 Немного про функции . . . . . . . . . . . . . . . . . . . . . . . . ....13210.8 Соглашения CDECL . . . . . . . . . . . . . . . . . . . . . . . . . . ....13210.9 Сохранение регистров . . . . . . . . . . . . . . . . . . . . . . . . ....13311 Лекция 11. Функция main . . . . . . . . . . . . . . . . . . . . . . . . . . . ....13411.1 ABI - двоичный интерфейс приложения . . . . . . . . . . . . . . ....13411.2 Функция main . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ....13511.3 Начальное состояние стека . . . . . . . . . . . . . . . . . . . . . . ....13511.4 Сохранение требований по выравниванию . . . . . . . . . . . . . ....13711.5 Конструкторы и деструкторы . . . . . . . . . . . . . . . . . . . . ....13811.6 Оболочка вокруг main . . . . . . . . . . . . . . . . . . . . . . . . . ....13912 Лекция 12. Особенности архитектуры х86-64. . . . . . . . . . . . . . . . ....14012.1 Выравнивание фрейма . . . . . . . . . . . . . . . . . . . . . . . . ....14012.2 Отказ от указателя фрейма . . . . . . . . . . . . . . . . . . . . . . ....14012.3 Компиляторы и соглашения вызова функции . . . . . . . . . . . . ....14212.4 Соглашение FASTCALL . . . . . . . . . . . . . . . . . . . . . . . ....14412.5 Особенности 64-разрядной процессорной архитектуры . . . . . . ....14512.6 Архитектура х86_64 . . . . . . . . . . . . . . . . . . . . . . . . . . ....14613 Лекция 13. Безопасность программного обеспечения . . . . . . . . . . . ....14813.1 Пример 1 “Заглянуть за горизонт” . . . . . . . . . . . . . . . . . . ....14813.2 Пример 2. “Нескучная арифметика” . . . . . . . . . . . . . . . . . ....15013.3 Пример 3. “return-to-libc” . . . . . . . . . . . . . . . . . . . . . . . ....15113.4 Способы защиты . . . . . . . . . . . . . . . . . . . . . . . . . . . ....15414 Лекция 14. Динамическая память . . . . . . . . . . . . . . . . . . . . . . ....15614.1 Управление динамической памятью . . . . . . . . . . . . . . . . . ....15614.2 Выделение динамической памяти . . . . . . . . . . . . . . . . . . ....15614.3 Ограничения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ....15814.4 Производительность. Пропускная способность . . . . . . . . . . ....15814.5 Внутренняя фрагментация. Внешняя фрагментация . . . . . . . . ....15814.6 Проблемы реализации менеджера памяти . . . . . . . . . . . . . ....15915 Лекция 15. Работа с числами с плавающей точкой. Часть 1 . . . . . . . . ....16515.1 Дробные двоичные числа . . . . . . . . . . . . . . . . . . . . . . . ....16515.2 Представимые рациональные числа . . . . . . . . . . . . . . . . . ....16515.3 Представление чисел с плавающей точкой . . . . . . . . . . . . . ....16515.4 Диапазоны значений . . . . . . . . . . . . . . . . . . . . . . . . . ....16715.5 Округление . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ....16715.6 Арифметические операции . . . . . . . . . . . . . . . . . . . . . . ....16815.7 Математические свойства сложения и умножения . . . . . . . . . ....17015.8 Числа с плавающей точкой в языке Си . . . . . . . . . . . . . . . ....17115.9 Упрощённая схема х87 . . . . . . . . . . . . . . . . . . . . . . . . ....17116 Лекция 16. Работа с числами с плавающей точкой. Часть 2. Сопроцессор х87....17316.1 Слово (регистр) состояния . . . . . . . . . . . . . . . . . . . . . . ....17316.2 Управляющий регистр . . . . . . . . . . . . . . . . . . . . . . . . ....17516.3 Регистр признаков . . . . . . . . . . . . . . . . . . . . . . . . . . . ....17516.4 NASM и числа с плавающей точкой . . . . . . . . . . . . . . . . . ....17516.5 Пример 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ....17616.6 Пример 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ....17816.7 Порядок действий . . . . . . . . . . . . . . . . . . . . . . . . . . . ....17816.8 Дополнительные команды . . . . . . . . . . . . . . . . . . . . . . ....17916.9 Сравнение чисел . . . . . . . . . . . . . . . . . . . . . . . . . . . ....18016.10 Дополнительные возможности работы сопроцессора . . . . . . . ....18117 Лекция 17. Элементы системы программирования . . . . . . . . . . . . . ....18217.1 Система программирования . . . . . . . . . . . . . . . . . . . . . ....18217.2 Система программирования языка Си . . . . . . . . . . . . . . . . ....18217.3 Компиляция . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ....18417.4 Схема работы ассемблера . . . . . . . . . . . . . . . . . . . . . . . ....18417.5 Пример Си-программы . . . . . . . . . . . . . . . . . . . . . . . . ....18517.6 Статическая компоновка . . . . . . . . . . . . . . . . . . . . . . . ....18618 Лекция 18. Сборка Си-программы . . . . . . . . . . . . . . . . . . . . . . ....19118.1 Предварительное определение переменных . . . . . . . . . . . . ....19118.2 Сильные и слабые символы. Пример. . . . . . . . . . . . . . . . . ....19118.3 Правила работы с символами . . . . . . . . . . . . . . . . . . . . ....19218.4 Задача. Ошибка компоновки . . . . . . . . . . . . . . . . . . . . . ....19318.5 Пример (Правила перебазирования) . . . . . . . . . . . . . . . . . ....19318.6 Работа с общими функциями . . . . . . . . . . . . . . . . . . . . . ....19618.7 Статические библиотеки . . . . . . . . . . . . . . . . . . . . . . . ....19618.8 Загрузка исполняемого объектного файла . . . . . . . . . . . . . . ....19719 Лекция 19. Динамические библиотеки. Динамическое связывание . . . . ....19919.1 Динамические библиотеки . . . . . . . . . . . . . . . . . . . . . . ....19919.2 Пример . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ....20019.3 Позиционно независимый код в IA-32 . . . . . . . . . . . . . . . . ....20119.4 Код при вызове функций . . . . . . . . . . . . . . . . . . . . . . . ....20419.5 Загрузка динамически скомпонованного исполняемого файла . . ....20520 Лекция 20. Аппаратное обеспечение . . . . . . . . . . . . . . . . . . . . . ....20720.1 Логические вентили . . . . . . . . . . . . . . . . . . . . . . . . . . ....20720.2 Сумматор. Полусумматор . . . . . . . . . . . . . . . . . . . . . . . ....20920.3 Мультиплексор . . . . . . . . . . . . . . . . . . . . . . . . . . . . ....20920.4 Арифметико-логическое устройство . . . . . . . . . . . . . . . . . ....21020.5 Регистр: сохранение 1 бита . . . . . . . . . . . . . . . . . . . . . . ....21020.6 Статическая память . . . . . . . . . . . . . . . . . . . . . . . . . . ....21120.7 Отличие статической памяти от динамической памяти . . . . . . ....21120.8 Разработка интегральных схем . . . . . . . . . . . . . . . . . . . . ....21120.9 Этапы разработки и изготовления компонент ЭВМ . . . . . . . . ....21220.10 Закон Мура . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ....21220.11 Закон Гроша . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ....21320.12 Закон Белла . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ....21320.13 Различные классы компьютеров . . . . . . . . . . . . . . . . . . . ....21320.14 Оперативная память . . . . . . . . . . . . . . . . . . . . . . . . . . ....21421 Лекция 21. Организация шин . . . . . . . . . . . . . . . . . . . . . . . . . ....21721.1 Шины и адресные пространства. . . . . . . . . . . . . . . . . . . ....21721.2 Организация ввода/вывода через пространство портов и через память. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ....22021.3 Шина. Точка зрения системного программиста . . . . . . . . . . . ....22221.4 Пример устройства на шине: WatchDog. . . . . . . . . . . . . . . ....22421.5 Физические принципы устройства шин. Основные характеристики шин. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ....22521.6 Развитие системы связанных шин персональных компьютеров . . ....22621.7 Примеры шин: фронтальная шина . . . . . . . . . . . . . . . . . . ....22921.8 Синхронизация обращений к памяти . . . . . . . . . . . . . . . . ....22921.9 Примеры шин: PCI. . . . . . . . . . . . . . . . . . . . . . . . . . . ....23222 Лекция 22. Использование шин в современных компьютерах . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ....23422.1 Примеры шин: AGP, USB, SATA . . . . . . . . . . . . . . . . . . . ....23422.2 Жесткий диск . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ....23522.3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ....23722.4 Ввод/вывод (блочного) SATA-устройства. . . . . . . . . . . . . . . ....23822.5 Твердотельные диски (SSD) . . . . . . . . . . . . . . . . . . . . . ....23922.6 Локальность в программах . . . . . . . . . . . . . . . . . . . . . . ....24222.7 Иерархическая организация памяти, кэширование. . . . . . . . . ....24422.8 Кэш-память: способы организации. . . . . . . . . . . . . . . . . . ....24622.9 Кэш прямого отображения. . . . . . . . . . . . . . . . . . . . . . . ....24723 Лекция 23. Работа кэша. Количественные характеристики работы компьютера . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ....24823.1 Запись в кэш . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ....24823.2 Метрики производительности кэша . . . . . . . . . . . . . . . . . ....24923.3 Способы оценки производительности компьютеров и программ . ....25023.4 Аппаратные средства измерения времени. . . . . . . . . . . . . . ....25123.5 Оценка производительности памяти: синтетический бенчмарк (контрольная задача) . . . . . . . . . . . . . . . . . . . . . . . . . ....25223.6 Микроархитектура процессора, ее связь с другими архитектурными уровнями. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ....25423.7 Пропускная способность vs. Латентность . . . . . . . . . . . . . . ....25623.8 Оценка латентности памяти на синтетическом тесте. . . . . . . . ....25723.9 Микроархитектурные решения . . . . . . . . . . . . . . . . . . . ....26023.10 Конвейерная обработка команд, проблемы конвейерной обработки 26023.11 CISC и RISC архитектуры. . . . . . . . . . . . . . . . . . . . . . . ....26623.12 RISC-V – архитектура RISC-микропроцессоров с открытым исходным кодом. . . . . . . . . . . . . . . . . . . . . . . . . . . . ....26723.13 Конвейер RISC-V . . . . . . . . . . . . . . . . . . . . . . . . . . . ....26923.14 Развитие системы команд в архитектуре x86 . . . . . . . . . . . . ....27024 Лекция 24. Системное управление работой современного компьютера . . ....27224.1 Режимы работы современного процессора архитектуры Intel64/AMD64, загрузка. . . . . . . . . . . . . . . . . . . . . . . . ....27224.2 Встраиваемое ПО, обеспечивающее начальную загрузку компьютера: BIOS, ACPI, UEFI . . . . . . . . . . . . . . . . . . . ....27324.3 Многозадачная работа компьютера: требования к аппаратуре. . . ....27524.4 Модели памяти. . . . . . . . . . . . . . . . . . . . . . . . . . . . . ....27624.5 Аппарат защиты памяти. . . . . . . . . . . . . . . . . . . . . . . . ....27824.6 Страничная виртуальная память. . . . . . . . . . . . . . . . . . . ....28024.7 Упрощенная схема извлечения данных из виртуальной памяти . ....28424.8 Уровни (кольца) защиты . . . . . . . . . . . . . . . . . . . . . . . ....28524.9 Прерывания. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ....28524.10 Hello, world! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ....289

Описание

В этом материале разберём тему: изучение.

Книга имеет своей целью изучение базовых принципов устройства современных ЭВМ, анализ качественных и количественных характеристик различных компонент ЭВМ, анализ влияния этих характеристик на работу прикладных программ. Помимо того, предполагается практическое освоение языка ассемблера архитектуры IA-32, изучение особенностей этой процессорной архитектуры, изучение взаимосвязей между архитектурой набора команд, механизмами реализации языка Си и системой программирования.

Если материал оказался полезен — сохраните страницу.

изучение ассемблера анализ характеристик языка архитектуры архитектура язык

Частые вопросы

Можно ли скачать «Архитектура ЭВМ и язык ассемблера» бесплатно?

Да, «Архитектура ЭВМ и язык ассемблера» доступна для бесплатного скачивания на нашем сайте в формате PDF. Ссылка на файл находится на этой странице.

В каком формате и какого размера файл?

Книга предоставляется в формате PDF, размер файла 5,7 МБ.

Кто автор и когда вышла книга?

автор — Падарян Вартан Андроникович, издательство Самиздат, год выпуска 2024, 291 страниц.

О чём книга «Архитектура ЭВМ и язык ассемблера»?

Книга имеет своей целью изучение базовых принципов устройства современных ЭВМ, анализ качественных и количественных характеристик различных компонент ЭВМ, анализ влияния этих характеристик на работу прикладных программ.

Похожие материалы