Защищенный режим процессоров Intel 80286,80386,80486.1993

Защищенный режим процессоров Intel 80286,80386,80486.1993

ВВЕДЕНИЕ
ВХОДИМ В ЗАЩИЩЁННЫЙ РЕЖИМ
Подготовка к переключению в защищённый режим
Переключение в защищённый режим
Возврат в реальный режим
Пример простой программы переключения режима

ОСОБЕННОСТИ ЗАЩИЩЁННОГО РЕЖИМА ПРОЦЕССОРА I80286
Адресация памяти в реальном режиме
Адресация памяти в защищённом режиме



Преобразование адресов в защищённом режиме
Детальное описание схемы преобразования адресов
Защита в процессоре i80286

Кольца защиты
Тип сегментов
Границы сегментов
Привилегированные и чувствительные команды
Межсегментная передача управления
Команды CALL и JMP
Команды RET и IRET

Виртуальная память в процессоре i80286
ОБРАБОТКА ПРЕРЫВАНИЙ В ЗАЩИЩЁННОМ РЕЖИМЕ
Прерывания в реальном режиме
Прерывания защищённого режима
Таблица прерываний защищённого режима
Исключения в защищённом режиме
Обработка аппаратных прерываний
Программа, которая работает с прерываниями

ОСОБЕННОСТИ ПРОЦЕССОРОВ I80386 И I80486

Преобразование адресов
Обработка прерываний
Мультизадачность
Режим виртуального процессора i8086
Виртуальные машины
Переключение в защищённый и реальный режимы
Процессор i80486

Что дальше?
МУЛЬТИЗАДАЧНОСТЬ В ПРОЦЕССОРЕ I80286
Задача и сегмент состояния задачи
Переключение задач
Синхронизация задач и семафоры

Пример мультизадачного монитора
ОПЕРАЦИОННАЯ СИСТЕМА MICROSOFT WINDOWS
Использование функций DPMI
Драйверы, резидентные программы и WINDOWS
Связь с WINDOWS CLIPBOARD
Получить версию WinOldAp

Открыть CLIPBOARD
Очистить CLIPBOARD
Записать данные в CLIPBOARD
Получить размер CLIPBOARD
Прочитать данные из CLIPBOARD
Закрыть CLIPBOARD
Установить размер данных, записанных в CLIPBOARD
Критическая секция
Пример программы для работы с CLIPBOARD

ОБЗОР ЛИТЕРАТУРЫ
ИЕРАРХИЯ СРЕДСТВ ДЛЯ РАБОТЫ В ЗАЩИЩЁННОМ РЕЖИМЕ
Интерфейс BIOS
Определить размер расширенной памяти
Переслать блок расширенной памяти

Установить защищённый режим работы процессора
Пример использования интерфейса BIOS
Интерфейс HIMEM.SYS
Интерфейс EMS/VCPI
Проверка наличия в системе интерфейса VCPI
Получить адрес интерфейса VCPI

Определить максимальный физический адрес памяти
Определить количество свободных страниц памяти
Получить страницу памяти
Освободить страницу памяти
Получить физический адрес страницы памяти, располагающейся в пределах первого мегабайта
Прочитать содержимое системного регистра CR0
Прочитать содержимое отладочных регистров
Установить отладочные регистры
Получить отображение векторов прерываний для контроллеров прерываний 8259
Установить отображение векторов прерываний для контроллеров прерываний 8259

Переключить процессор в защищённый режим
Переключить процессор в виртуальный режим
Пример программы
Интерфейс DPMI
Получить адрес перехода в защищённый режим
Вход в защищённый режим
Определение текущего режима работы
Создать дескриптор в таблице LDT
Освободить дескриптор в таблице LDT
Преобразование сегмента в дескриптор

Получить значение инкремента для вычисления следующего селектора в массиве
Зарезервированные функции
Получить базовый адрес сегмента
Установить базовый адрес сегмента
Установить предел сегмента
Установить поле прав доступа в дескрипторе
Создание алиасного дескриптора для сегмента кода
Получить дескриптор

Защищенный режим процессоров Intel 80286,80386,80486.1993

Установить дескриптор
Получить конкретный дескриптор в таблице LDT
Получить блок памяти из пула свободной памяти DOS

Освободить блок памяти, взятый из пула DOS
Изменить размер блока памяти, полученного из пула DOS
Получить вектор прерывания реального режима
Установить вектор прерывания реального режима
Получить адрес обработчика исключения с заданным номером
Установить адрес обработчика исключения с заданным номером
Получить вектор прерывания защищённого режима
Установить вектор прерывания защищённого режима
Эмуляция прерывания реального режима
Вызов процедуры реального режима, заканчивающейся командой RET FAR

Вызов процедуры реального режима, заканчивающейся командой IRET
Перехват передачи управления программе реального режима
Отмена перехвата передачи управления процедуре реального режима.
Получить адреса процедур сохранения/восстановления состояния.
Получить адрес процедуры переключения режима
Получить версию спецификации DPMI
Получить информацию о свободной памяти
Получить блок памяти
Освободить блок памяти
Изменить размер блока памяти

Зафиксировать линейную область памяти
Расфиксирование блока памяти
Отмена фиксации страниц для области памяти виртуального режима
Фиксация страниц для области памяти виртуального режима
Получить размер страницы памяти
Отметка страницы для свопинга
Отвергнуть содержимое страниц
Преобразование физического адреса в линейный
Запретить виртуальные прерывания

Разрешить виртуальные прерывания.
Получить состояние флага виртуальных прерываний
Получить адрес для использования расширений DPMI
Установить точку останова для отладки
Отмена отладочной точки останова
Получить состояние отладочной точки останова
Сброс точки останова
DOS-экстендеры
Phar Lap DOS-экстендер

Виртуальная машина WINDOWS
ПРИЛОЖЕНИЕ
Регистр EFLAGS
Управляющие регистры процессора i80386
Формат регистра CR0 процессора i80386
Формат регистра CR0 процессора i80486
Формат регистра CR3 процессора i80486
Системные команды процессоров i80286/i80386/i80486
ARPL Коррекция поля привилегий инициатора запроса в селекторе

CLTS Сброс флага TS переключения задачи в регистре CR0
LAR Загрузка байта прав доступа
LGDT Загрузка регистра GDTR
LIDT Загрузка регистра IDTR
LLDT Загрузка регистра LDTR
LMSW Загрузка слова состояния процессора
LSL Загрузка предела сегмента
LTR Загрузка регистра задачи
MOV Загрузка системных регистров
SGDT Запись в память содержимого регистра GDTR

SIDT Записать в память содержимое регистра IDTR
SLDT Записать в память содержимое регистра LDTR
SMSW Записать слова состояния процессора
STR Запись регистра задачи
VERW Проверить сегмент на возможность записи
Недокументированная команда LOADALL
Утилита MEMOSCOP
Защита программ от отладки
Содержание раздела