Учебный курс Архитектура ЭВМ и язык ассемблера Лекция 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