Архитектура ЭВМ и язык ассемблера Учебный курс заместитель министра связи и массовых

реклама
Учебный курс
Архитектура ЭВМ
и язык ассемблера
Лекция 1
заместитель министра связи и массовых
коммуникаций РФ, старший преподаватель
Северов Дмитрий Станиславович
Ассемблер
• Литература
– Ирвин, Кип. Язык ассемблера для процессоров Intel,
4е издание. ISBN 5-8459-0779-9
– Юров В.И., Assembler: Специальный справочник.
ISBN 5-469-00003-6
1. Основные понятия. Структура процессоров IA-32.
2. Основы ассемблера. Пересылки, адресация,
основы целочисленной арифметики.
3. Процедуры. Условные вычисления.
4. Целочисленная арифметика. Профессиональное
программирование.
5. 32-разрядные программы для Windows.
Интерфейс с языками высокого уровня.
6. Основы работы с диском и иным оборудованием.
7. Числа с плавающей точкой. Сопроцессор.
2
Алгоритм
• Алгоритм (ISO 2382/1-84)
– Конечный набор предписаний, определяющий решение
задачи посредством конечного количества операций
• Свойства алгоритма
– Дискретность информации и действий над ней
– Понятность : доступность и однозначность предписаний
– Конечность: получение результата за конечное число
шагов
– Определённость: одинаковость результата для одинаковых
данных
– Массовость: применимость к различным данным
• Процесс, порождаемый алгоритмом в ВМ –
вычислительный процесс
3
Модели, языки, акторы
• Модель – аналог
реального явления,
представляющий
законы поведения
частей и связей.
• Язык - знаковая
система фиксации,
переработки и передачи
информации.
• Актор – модельный
собеседник, которому
направлены фразы
модельного языка.
Рынки
Потребители
Задачи
Алгоритмы
Программы
Блоки аппаратуры
Цифровые схемы
Аналоговые схемы
Нелинейные структуры
4
Модели, языки, акторы
• Модель – аналог
реального явления,
представляющий
законы поведения
частей и связей.
• ЯзыкАссемблер
- знаковая
система
фиксации,
применяется
здесь
переработки и передачи
информации.
• Актор – модельный
собеседник, которому
направлены фразы
модельного языка.
Рынки
Потребители
Задачи
Алгоритмы
Программы
Блоки аппаратуры
Цифровые схемы
Аналоговые схемы
Нелинейные структуры
5
… среди других языков
•
•
•
Программы
•
•
•
Аппаратура
•
Цифровые схемы •
Аналоговые схемы •
Алгоритмы
Языки спецификаций
Языки программирования
Язык ассемблера
Системные вызовы
Машинный код
Микрокоманды
Цифровые сигналы
Цифровые сигналы
Аналоговые сигналы
6
Назначение ассемблера
• Применяется для…
– анализа
• сбоев
• взаимодействия
• чужого кода
– предельной разработки
• по производительности
(библиотеки)
• по потреблению
ресурсов (встраивание)
• по степень доверия
(защита, надёжность)
• Исключается для…
– функционально
сложного ПО
– сопровождаемого ПО
– переносимого ПО
– абстрагирования от
аппаратуры (драйверы)
7
Двоичные операции
• Одноразрядные:
– булево отрицание
– булево сложение
– булево умножение
• Многоразрядные, арифметические
– сдвиги
– арифметическое сложение
– арифметическое умножение
• Произвольные:
– табличное представление
– конструирование
– синтез, базис
– СДНФ, СКНФ
– минимизация и сложность
• «Нелогичность» булевой алгебры
8
Представление простейших данных
• Ограниченные двоичные поледовательности
– Беззнаковые целые числа
– Компактная форма – шестнадцатеричная
– Преобразования между системами
– Ограничения представления (байт, слово, …)
– Числа со знаком, дополнительный код
– Представимые числа
• Символы и строки : ASCII, Unicode, ASCIIZ
9
Рабочее окружение программы
ЦП
АЛУ
Основная
память
УУ
УBB
УBB
УBB
УBB
•
Снаружи программы
1. Загрузка кода
2. Выделение ресурсов
3. Нормирование работы и
реагирование на запросы
4. Освобождение ресурсов
Регистры
Среда взаимодействия
• Программа
– Выполнение команд
– Изменение состояния
• Другие программы
•
Внутри команды
1.
2.
3.
4.
5.
Выборка команды
Декодирование
Выборка операндов
Выполнение операции
Запись результата
10
Нарушение потока управления
• Внешнее прерывание
– Система прерывает программу непреодолимо и
непредсказуемо для последней
– Аппаратное прерывание, исчерпание времени
• Исключительная ситуация
– Операция невыполнима в данных условиях
– Операция м.б. выполнима в других условиях
• Произвольное (программное) прерывание
– Специальная команда обращения «вовне»
– Не путать с передачей управления «внутри»!
11
Особенности iA-32
• Программная модель
– Сегментированная, виртуализуемая память
– Программный стек
– Пользовательские регистры
•
•
•
•
•
общего назначения: EAX-EDX,EBP,ESP,ESI,EDI
сегментные : CS,SS,ES,DS,FS,GS
указатель команды: EIP
флаги состояния: EFLAGS
расширения ST(0)-ST(7), MMX0-MMX7, XMM0-XMM7
– Системные регистры: управления, сист. адресов, отладки
• Режимы работы
– RM: Real-address mode
– PM: Protected mode
• VM: Virtual 8086 mode
20
- 232 байт
36
- 220 (2 ) байт
- 2 байт каждому
– SMM: System management mode
12
Адресация IA-32
• Физический адрес в режиме реальных адресов
– Механизм страничного преобразования
– Линейный адрес
• Сегментный адрес
• Эффективный адрес
– Смещение из команды
– Содержимое базового регистра
– Содержимое индексного регистр
• Физический адрес в защищённом режиме
– Механизм страничного преобразования
•
•
•
•
Линейный адрес
Базовый адрес сегмента из дескриптора в таблице дескрипторов
Указатель на дескриптор сегмента
Эффективный адрес
13
Assembly Language for Intel-Based
Computers 4th Edition
http://www.kipirvine.com/asm/4th/index.html
• Средства отладки
– Debugging Tools
• Часто задаваемые вопросы
– Frequently Asked Questions
• Исправления примеров и библиотек
– Example Programs and Library Update Patch
• Решения заданий с нечётными номерами
– Solutions to odd-numbered prog exercises
• Справочный файл по «учебным» библиотекам
– Help file for the book's link library
14
www.Intel.com/products/processor/manuals/
• Расширение: Контроллер прерываний
– x2APIC Specification
• Тонкости реализации памяти
TLBs, Paging-Structure Caches, and Their
invalidation
• Собственно архитектура
– Volume 1: Basic Architecture
– Volumes 2A,2B: instruction Set Reference
– Volumes 3A,3B: System Programming Guide
• Рекомендации по оптимизации
– Optimization Reference Manual
15
Процесс создания программы
• Редактирвание
⇓ Ваш исходный текст
• Трансляция
⇓ Объектный код
• Компоновка
⇓ Загрузочный код
• Загрузка
⇓ Исполняемый код
• Выполнение,отладка
⇓ Результат
16
Процесс создания программы
• Редактирвание
⇓ Ваш исходный текст
• Трансляция
⇓ Объектный код
• Компоновка
⇓ Загрузочный код
• Загрузка
⇓ Исполняемый код
• Выполнение,отладка
⇓ Результат
⇐Изменения текста
⇐Текстовые библиотеки
⇐Статический код
⇐Решения ОС
⇐Внешние события
⇐Внешние данные и код
17
Процесс создания программы
• Редактирвание
⇓ Ваш исходный текст
• Трансляция
⇓ Объектный код
• Компоновка
⇓ Загрузочный код
• Загрузка
⇓ Исполняемый код
• Выполнение,отладка
⇓ Результат
Ввод предписаний
⇐Изменения текста
Предписания трансляции
⇐Текстовые библиотеки
Предписания компоновки
⇐Статический код
Предписания загрузки
⇐Решения ОС
Предписания исполнения
⇐Внешние события
⇐Внешние данные и код 18
Предписания ассемблеру (1)
• Команды
– изображение в машинного кода «один-в-один»
• Псевдоданные
– Предопределённые имена
• Дата, время, окружение, файл
• Сегменты, разметка кода, «неинициализация»
– Операторы трансляции
• Арифметические, побитовые, сдвиги, отношения
• Макрооператоры, работа с записями и типами
• Сегментная информация, определение данных
– Операторы исполнения (для директив, см. далее)
• «Логические» выражения, значения флагов
19
Предписания ассемблеру (2)
• Псевдокоманды
– Директивы условного выполнения программ
– Директивы трансляции
1. Работа со счётчиком адреса
2. Условная трансляция, и генерация ошибок
3. Распределение данных и установления равенства
4. Управления листингом
5. Работа с макрокомандами и блоками повторения
6. Работа с процедурами
7. Управление областью видимости
8. Управление сегментацией в т.ч. упрощенное
9. Работа строками и сложными типами
10.Указание типа процессора
11.Комментарии, эхо, вставки, библиотеки, контекст
20
«Целочисленные» константы и выражения
• «Целочисленная» константа
[{+|-}] цифры [основание]
– Основание
[{h|q|o|d|b|r|t|y }]
• «Целочисленное» выражение
– Результат всегда 32 бита
– Операторы над значениями (по приоритетам)
1.
2.
3.
4.
Скобки
(Не) изменение знака
Произведение, частное, остаток
Сумма, разность
21
«Вещественные» и текстовые константы
• «Десятичные вещественные» константы
[{+|-}]цифры.[цифры]
[E[{+|-}]цифры]
• Закодированные «вещественные» константы
+1.0
3А800000r
• Символьные и строковые константы
”A” ’A’
”Буква ’A’- первая в алфавите”
’Он сказал: ”Поехали!” и взмахнул рукой.’
22
Идентификаторы и
зарезервированные слова
• Идентификаторы
– Длина < 248 символов
– Регистр не различается
– Первой – буква (A…Z, a…z, _, @, $)
• Зарезервированные слова
–
–
–
–
Обозначения команд (мнемокоды)
Обозначения директив
Обозначения операторов
Обозначения регистров
23
Команды
• Структура
[метка] мнемокод [операнды]
• Метка
идентификатор:
– символическое обозначение адреса команды
• Мнемокод
– Символическое обозначение варианта машинной команды
• Операнды
– Константное выражение, в т.ч. (символическая) константа
– Название регистра
– Имя переменной
24
Скачать