ГЛАВА 13
Принцип Действия
13.1 Активизация Других Отладчиков
13.2 Основы Виртуальных Машин
227
13.1 Активизация Других Отладчиков
Soft-ICE работает с большинством других отладчиков, пользуясь преимуществами
отладочного прерывания семейства 8086 (INT 3). Большинство отладчиков
используют однобайтовую команду INT 3 (CCH) для выполнения точек останова.
Целевая команда заменяется на INT 3. Когда выполнение достигает целевого
адреса, управление передается обработчику INT 3 отладчика. Затем отладчик
заменяет (CCH) на первый байт первоначальной команды.
Когда выполняются точки останова Soft-ICE, в зависимости от команды ACTION,
может произойти одно из нескольких событий. Обычно при использовании Soft-ICE
с другим отладчиком, ACTION устанавливается на INT3. Когда выполняется условие
останова, Soft-ICE передает управление главному отладчику при помощи эмуляции
INT 3.
Некоторые отладчики могут работать неправильно при эмуляции INT 3. Для этих
отладчиков обеспечены две другие опции ACTION. Это - INT1 и NMI.
INT 1 - пошаговое прерывание семейства 8086. Большинство отладчиков будут
обрабатывать незапрашиваемый INT 1 как точку останова. NMI поддерживается
большинством отладчиков как средство выхода из зависания. Эти отладчики были
разработаны для аппаратных переключателей выхода, которые производили
немаскируемое прерывание. Когда ACTION установлено на NMI, Soft-ICE эмулирует
немаскируемое прерывание (Interrupt2). CODEVIEW работает лучше всего с ACTION,
установленным на NMI.
13.2 Основы Виртуальных Машин
Магия Soft-ICE стала возможной из-за возможностей виртуальной машины
процессора 80386. Soft-ICE выполняется в защищенном режиме 80386 и
управляет окружением DOS. Схема защиты 80386 дает Soft-ICE полный
контроль над окружением DOS, в то же время защищая его от "капризных"
программ.
228
Как генерируются точки останова Soft-ICE?
Soft-ICE использует три разных возможности 80386 для создания точек останова:
* Точки останова на ячейку памяти используют регистры
останова 80386
* Точки останова на диапазоны памяти используют механизм
страничной организации 80386
* Точки останова на команды ввода/вывода используют уровень
привилегий ввода/вывода и битовую маску ввода/вывода
Как выполняется команда BREAK?
Команда BREAK позволяет использовать клавиатуру для вызова Soft-ICE, даже
когда прерывания отключены и система зависла. Soft-ICE виртуализирует
механизм прерываний, так что для Soft-ICE прерывания никогда не отключаются,
даже когда они отключены для программы DOS, выполняющейся в виртуальной
машине.
В режиме BREAK виртуализируются следующие команды, чтобы удостовериться что
флаг прерывания никогда не сбрасывается:
PUSHF
POPF
STI
CLI
INT n
IRET
Специальные соображения о виртуальном режиме 8086
Soft-ICE выполняет DOS в виртуальной машине 8086. Эта возможность - главная
особенность микропроцессора 80386. При выполнении программ реального режима
(DOS и т.д.) в виртуальной машине, программой, контролирующей виртуальную
машину, должны эмулироваться некоторые особенности 8086. В нашем случае
229
виртуальную машину контролирует Soft-ICE. Soft-ICE поддерживает следующие
особенности:
* Функции прерывания ROM BIOS 15H : 87H, 88H
и 89H
* Недокументированная команда loadall
* Управление Адресной Линией 20H
* Команды защищенного режима 80286 и 80386
* Ошибки 80386
Функции прерывания ROM BIOS 15H : 87H, 88H
и 89H
Функция BIOS 87H позволяет программе обращаться к
памяти выше одного мегабайта на архитектуре IBM AT
или Personal Series II через механизм перемещения блоков.
Функция 88H возвращает размер расширенной памяти.
Эти функции используются драйвером устройства VDISK.
Soft-ICE эмулирует эти вызовы BIOS для совместимости
с VDISK. Функция 89H обычно используется для перехода в
защищенный режим, но Soft-ICE не может позволить
этому случиться. Вместо этого возвращает установленный флаг переноса.
Неописанная команда loadall
80286 содержит неописанную команду, называемую
loadall. Эта команда первоначально помещалась на
чип в диагностических целях и в основном не
используется программным обеспечением. Однако, она
используется некоторыми версиями RAMDRIVE фирмы
Microsoft, который продается с Microsoft Windows и
MS-DOS 3.2. Soft-ICE эмулирует loadall, чтобы обеспечить
работу RAMDRIVE, однако, невозможно произвести полную
эмуляцию этой команды.
230
Управление Адресной Линией 20H
IBM AT предоставляла специальную особенность, позволяющую некоторым старым
программам, которые первоначально были написаны для CP/M функционировать на
процессоре 80286. Эта возможность давала обращениям к памяти, возвращающимся
в нулевую область на 8086 при выходе за границу мегабайта, работать на 80286.
Некоторые программы отключают эту "совместимость", чтобы обращаться к памяти
выше одного мегабайта в режиме реальной адресации. Soft-ICE эмулирует эту
способность. Она обеспечивается на всех машинах 80386 AT через контроллер
клавиатуры и через порт ввода/вывода 92H на PS/2.
Команды защищенного режима 80286 и 80386
Некоторые специфические программы AT использовали команды защищенного режима
80286. С появлением 80386 некоторые программы 80386 используют команды
защищенного режима 80386. Эти программы не будут работать с Soft-ICE.
Soft-ICE обеспечивает стандартные расширения режима реальной адресации,
которые фирма Intel включила в процессоры 80186 и 80286 (PUSHALL, POPALL и
т.д.), но не команды защищенного режима типа LGDT, LMSW и т.д.
Ошибки 80386
Есть несколько ошибок в работе чипа 80386. Большинство этих ошибок относятся
только к программному обеспечению защищенного режима (типа Soft-ICE).
~~\ Перевел Сергей Середа, 1998, Кишинев 24-71-96, /~~
~~\ e-mail: serge_sereda@hotmail.com /~~
[ ВЕРНУТЬСЯ К ОГЛАВЛЕНИЮ ]
|