240 likes | 394 Views
Учебный курс. Архитектура ЭВМ и язык ассемблера Лекция 1 заместитель министра связи и массовых коммуникаций РФ, старший преподаватель Северов Дмитрий Станиславович. Ассемблер. • Литература. – Ирвин, Кип. Язык ассемблера для процессоров Intel,. 4е издание. ISBN 5-8459-0779-9.
E N D
Учебный курс Архитектура ЭВМ и язык ассемблера Лекция 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. Числа с плавающей точкой. Сопроцессор.
Алгоритм • Алгоритм (ISO 2382/1-84) – Конечный набор предписаний, определяющий решение задачи посредством конечного количества операций • Свойства алгоритма – Дискретность информации и действий над ней – Понятность : доступность и однозначность предписаний – Конечность: получение результата за конечное число шагов – Определённость: одинаковость результата для одинаковых данных – Массовость: применимость к различным данным • Процесс, порождаемый алгоритмом в ВМ – вычислительный процесс
Модели, языки, акторы Рынки Потребители Задачи Алгоритмы Программы Блоки аппаратуры Цифровые схемы Аналоговые схемы Нелинейные структуры • Модель – аналог реального явления, представляющий законы поведения частей и связей. • Язык - знаковая система фиксации, переработки и передачи информации. • Актор – модельный собеседник, которому направлены фразы модельного языка.
Модели, языки, акторы Рынки Потребители Задачи Алгоритмы Программы Блоки аппаратуры Цифровые схемы Аналоговые схемы Нелинейные структуры • Модель – аналог реального явления, представляющий законы поведения частей и связей. • Язык - знаковая система фиксации, переработки и передачи информации. • Актор – модельный собеседник, которому направлены фразы модельного языка. Ассемблер применяется здесь
… среди других языков • Языки спецификаций Языки программирования Язык ассемблера Системные вызовы Машинный код Микрокоманды Цифровые сигналы Цифровые сигналы Аналоговые сигналы Алгоритмы Программы Аппаратура Цифровые схемы • Аналоговые схемы • • • • • • •
Назначение ассемблера • Исключается для… – функционально сложного ПО – сопровождаемого ПО – переносимого ПО • Применяется для… – анализа • сбоев • взаимодействия • чужого кода – предельной разработки • по производительности (библиотеки) • по потреблению ресурсов (встраивание) • по степень доверия (защита, надёжность) – абстрагирования от аппаратуры (драйверы)
Двоичные операции • Одноразрядные: – булево отрицание – булево сложение – булево умножение • Многоразрядные, арифметические – сдвиги – арифметическое сложение – арифметическое умножение • Произвольные: – табличное представление – конструирование – синтез, базис – СДНФ, СКНФ – минимизация и сложность • «Нелогичность» булевой алгебры
Представление простейших данных • Ограниченные двоичные поледовательности – Беззнаковые целые числа – Компактная форма – шестнадцатеричная – Преобразования между системами – Ограничения представления (байт, слово, …) – Числа со знаком, дополнительный код – Представимые числа • Символы и строки : ASCII, Unicode, ASCIIZ
Рабочее окружение программы Снаружи программы 1. Загрузка кода 2. Выделение ресурсов 3. Нормирование работы и реагирование на запросы • ЦП АЛУ УУ Регистры УBB УBB УBB УBB Основная память 4. Освобождение ресурсов Среда взаимодействия Внутри команды 1. Выборка команды 2. Декодирование 3. Выборка операндов 4. Выполнение операции Запись результата • • Программа – Выполнение команд – Изменение состояния • Другие программы 5.
Нарушение потока управления • Внешнее прерывание – Система прерывает программу непреодолимо и непредсказуемо для последней – Аппаратное прерывание, исчерпание времени • Исключительная ситуация – Операция невыполнима в данных условиях – Операция м.б. выполнима в других условиях • Произвольное (программное) прерывание – Специальная команда обращения «вовне» – Не путать с передачей управления «внутри»!
Особенности 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 - 220байт - 232(236) байт - 220 байт каждому – SMM: System management mode
Адресация IA-32 • Физический адрес в режиме реальных адресов – Механизм страничного преобразования – Линейный адрес • Сегментный адрес • Эффективный адрес – Смещение из команды – Содержимое базового регистра – Содержимое индексного регистр • Физический адрес в защищённом режиме – Механизм страничного преобразования • Линейный адрес Базовый адрес сегмента из дескриптора в таблице дескрипторов Указатель на дескриптор сегмента Эффективный адрес • • •
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
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
Процесс создания программы • Редактирвание ⇓ Ваш исходный текст • Трансляция ⇓ Объектный код • Компоновка ⇓ Загрузочный код • Загрузка ⇓ Исполняемый код • Выполнение,отладка ⇓ Результат
Процесс создания программы • Редактирвание ⇐Изменения текста ⇐Текстовые библиотеки ⇐Статический код ⇐Решения ОС ⇐Внешние события ⇐Внешние данные и код ⇓ Ваш исходный текст • Трансляция ⇓ Объектный код • Компоновка ⇓ Загрузочный код • Загрузка ⇓ Исполняемый код • Выполнение,отладка ⇓ Результат
Процесс создания программы Ввод предписаний ⇐Изменения текста Предписания трансляции ⇐Текстовые библиотеки Предписания компоновки ⇐Статический код Предписания загрузки ⇐Решения ОС • Редактирвание ⇓ Ваш исходный текст • Трансляция ⇓ Объектный код • Компоновка ⇓ Загрузочный код • Загрузка ⇓ Исполняемый код • Выполнение,отладка Предписания исполнения ⇐Внешние события ⇐Внешние данные и код ⇓ Результат
Предписания ассемблеру (1) • Команды – изображение в машинного кода «один-в-один» • Псевдоданные – Предопределённые имена • Дата, время, окружение, файл • Сегменты, разметка кода, «неинициализация» – Операторы трансляции • Арифметические, побитовые, сдвиги, отношения • Макрооператоры, работа с записями и типами • Сегментная информация, определение данных – Операторы исполнения (для директив, см. далее) • «Логические» выражения, значения флагов
Предписания ассемблеру (2) • Псевдокоманды – Директивы условного выполнения программ – Директивы трансляции 1. Работа со счётчиком адреса 2. Условная трансляция, и генерация ошибок 3. Распределение данных и установления равенства 4. Управления листингом 5. Работа с макрокомандами и блоками повторения 6. Работа с процедурами 7. Управление областью видимости 8. Управление сегментацией в т.ч. упрощенное 9. Работа строками и сложными типами 10.Указание типа процессора 11.Комментарии, эхо, вставки, библиотеки, контекст
«Целочисленные» константы и выражения • «Целочисленная» константа [{+|-}] цифры [основание] – Основание [{h|q|o|d|b|r|t|y}] • «Целочисленное» выражение – Результат всегда 32 бита – Операторы над значениями (по приоритетам) 1. Скобки (Не) изменение знака Произведение, частное, остаток Сумма, разность 2. 3. 4.
«Вещественные» и текстовые константы • «Десятичные вещественные» константы [{+|-}]цифры.[цифры] [E[{+|-}]цифры] • Закодированные «вещественные» константы +1.0 3А800000r • Символьные и строковые константы ”A” ’A’ ”Буква ’A’- первая в алфавите” ’Он сказал: ”Поехали!” и взмахнул рукой.’
Идентификаторы и зарезервированные слова • Идентификаторы – Длина < 248 символов – Регистр не различается – Первой – буква (A…Z, a…z, _, @, $) • Зарезервированные слова Обозначения команд (мнемокоды) Обозначения директив Обозначения операторов Обозначения регистров – – – –
Команды • Структура [метка] мнемокод [операнды] • Метка идентификатор: – символическое обозначение адреса команды • Мнемокод – Символическое обозначение варианта машинной команды • Операнды – Константное выражение, в т.ч. (символическая) константа – Название регистра – Имя переменной