11/25/94 02:46pm
i4_otl.lek
В.Б.Бродин, И.И.Шагурин
"Микропоцессор i486. Архитектура,
программирование, интерфейс" М
"Диалог-МИФИ" 1993
--"i486tm микропроцессор" в 2-х
книгах Библиотека программиста
"И.В.К.-СОФТ" М 1993
Отладка программ i486.
ОТЛАДКА - Этап разработки программы, ставящий целью обнаружение, поиск и устранение ошибки.
Методы и средства отладки.
1 "Ручной
метод" - программист
вставляет в исходный текст
программы фрагменты, позволяющие
визуально контролировать ход
выполнения программы.
Обычно это контрольный вывод
промежуточных и окончательных
результатов. Некоторые трансляторы
с языков высокого уровня позволяют
помечать отдельные операторы как
комментарии особого рода. Такому
транслятору можно указать режим
трансляции при котором эти
комментарии будут восприниматься
как обычные операторы. После
отладки программы достаточно
перетранслировать программу
обычным образом и "лишние"
операторы будут исключены.
В случае простейших систем
контрольной информацией является
подача звуковых или световых
сигналов, отражающих ход процесса
(звуковые сигналы при тестировании
и загрузке ОС в современных
компьютерах).
Недостатками этого метода являются
необходимость набора
дополнительных частей программы и
искажения, вносимые добавлением и
удалением фрагментов.
Преимуществом - полный контроль
программиста за процедурой поиска
ошибки.
2 "Сервис
трансляторов" - контроль
наиболее характерных ошибок
разработчик транслятора может
возложить на библиотеку
стандартных операций языка
(контроль правильности индекса
массива при вычислении
действительного адреса, проверка
допустимости аргумента функции или
значения переменной ограниченного
типа...).
Современные трансляторы позволяют
создать исполняемый код,
выполняющий программу в отладочном
режиме пооператорно с выводом
значений указанных программистом
переменных после каждого шага.
Недостаток метода - дополнительные
затраты процессорного времени на
постоянный контроль значений
(обычно этот контроль можно
отключить, но надо иметь
дополнительные знания по
управлению транслятором).
Преимущество - достаточный
автоматизм поиска грубых ошибок,
что важно для начинающего
пользователя (типичный пример язык
"ПАСКАЛЬ" с полным отсутствием
понятия "по умолчанию").
3 "Отладчики"
- в отличие от вышеперечисленных
методов позволяют, в общем случае,
отладить программу несвязанную с
конкретным языком
программирования (программу в
кодах).
Эти отладочные системы можно
поделить на две группы:
"Интерпретаторы"
- программы отладчиков,
моделирующие работу
отлаживаемой программы в среде
конкретной вычислительной
системы. При этом программа
анализируется байт за байтом
так, как это делал-бы реальный
процессор, а при обнаружении
операции ввода/вывода
формируется соответствуюший
запрос к оператору.
Недостатки интерпретирующей
системы - невозможность
отладить программу, работающую
в реальном масштабе времени,
кроме этого сама система
занимает много места в памяти
машины.
Преимущества - отладка может
вестись на более мощном
инструментальном компьютере с
другой ситемой команд
процессора и структурой
внешних устройств. Возможна
отладка самомодифицирующихся
программ.
Системы
работающие "в живую" -
отладчики выступающие как
дополнения к отлаживаемой
программе. Эти системы вносят
небольшие изменения в
программу, позволяющие им в
нужный, с точки зрения
оператора, момент получать
управление и осуществлять
оговоренные оператором
дополнительные действия. Для
передачи управления
осушествляется замена части
кода отлаживаемой программы на
команду обращения к
подпрограмме или на
программное прерывание, после
получения управления
отладчиком, исходный код
восстанавливается.
Современные микропроцессоры
могут имеють встроенные
средства автоматического
обращения к программе
отладчика, обычно переключение
выполняется после выполнения
каждой команды.
Недостатки системы - могут
возникнуть проблемы при
отладке модифицирующейся
программы если неправильно
выбрана точка прерывания. Нет
возможности проконтролировать
работу программы,
расположенной в ПЗУ.
Преимущество - отладчик может
быть очень простым и быть
размещен даже при малом объеме
свободной памяти.
4 "Внутрисхемные
эмуляторы" -
аппартно-програмные
сверх-быстродействующие
устройства, подключаемые к
отлаживаемой системе вместо одной
или нескольких микросхем полностью
заменяя их и предоставляя
дополнительные возможности.
Недостаток системы - большая
стоимость.
Преимущества - полное отсутствие
искажений в отлаживаемой системе и
максимальный сервис при отладке.
Отладка в процессоре i486.
Процессор i486 имеет расширенные встроенные средства отладки среди которых:
Пошаговое выполнение;
Прерывание контрольной точки (командное);
Ловушка переключения задач;
Система отладочных регистров.
Пошаговое выполнение
Обеспечивает
останов после выполнения каждой
команды программы. Вводится
загрузкой значения TF=1 в регистре
флагов EFLAGS (бит 8).
Исключение 1 пошагового режима
имеет место как ловушка после
выполнения команды, если до
выполнения команды был установлен
флаг TF (сама команда, установивная
флаг прерывания не вызывает).
Процессор очищает флаг перед
вызовом обработчика исключений.
Флаг не очищается при изменении
привилигированности внутри задачи,
поэтому за этим должна следить ОС.
Флаг очищается при выполнении
команды INT, следовательно отладчики
должны эмулировать эти команды,
если необходимо сохранить
пошаговый режим для программы
прерывания.
Прерывание контрольной точки.
Ловушка
контрольной точки вызывается
выполнением команды INT 3.
Контрольная точка
подготавливается отладчиком,
который заменяет первый байт када
операции на значение CCh. При
выполнении исключения, адрес
возврата указывает на байт,
следующий за командой INT 3 и должен
быть скорректирован при
восстановлении исходного значения
кода.
В процессоре i486 используется как
вспомогательное средство.
Ловушка переключения задач.
Отладочное исключение происходит после переключения задачи при установленном бите T в TSS новой задачи. Исключение (как и в случае пошагового выполнения номер 1) происходит перед выполнением первой команды задачи.
ВНИМАНИЕ! Если отладчик оформлен в виде исключения с установленным битом ловушки, то произойдет зацикливание процессора.
Система отладочных регистров.
Для управления отладкой используется шесть регистров. Доступ к ним осуществляется при помощи команды MOV. Обращение возможно только из нулевого кольца привилегий.
Всего имеется восемь регистров, их назначение:
DR0..DR3 Каждый из этих регистров содержит линейный адрес одной из четырех контрольных точек. Если подкачка страниц разрешена, то их значения транслируются в физические адреса по общему алгоритму;
DR4..DR5 Регистра зарезервированы и в процессоре i486 не используются;
DR6 Отладочный регистр состояния. Он сообщает об условиях, выявленых во время генерирования отладочного исключения (номер 1). Биты регистра устанавливаются аппаратно, а сбрасываются программно;
DR7 Регистр задает вид доступа к памяти, связанный с каждой контрольной точкой.
Назначение битов:
LENi -
Размер кадра в точке останова,
описанной регистром DRi. Указывает
размер области, внутри которой
условия останова могут сработать.
Возможные значения:
00 - 1 байт (все биты соответствующего регистра DRi должны совпасть). Используется при указании адреса команды;
01 - 2 байта (младший бит адреса не используется);
10 - Запрещенное значение;
11 - 4 байта (не используются два младших бита).
R/Wi - Поле, определяющее тип доступа к памяти. Указывает контекст использования адреса в соответствующем регистре DRi.
Возможные значения:
00 - При выборке кода операции. Внимание значение поля LENi=0;
01 - Запись данных по указанному адресу;
10 - Запрещенное значение;
11 - Запись или чтение данных.
GD - Бит идентификации обращений к регистрам отладки. Его установка осуществляет "сверхзащиту" регистров отладки от доступа. Отладчик может установить его после инициализации регистров отладки и закрыть доступ к ним. Сброс этого бита осуществляется аппаратно при выполнении исключения с номером 1.
GE - Сообщение о глобальных точках останова. Если бит установлен, ловушка по данным будет происходить непосредственно после завершения команды, вызвавшей пересылку операнда. Если бит сброшен, то исключение может быть задерено на неопределенное время.
LE - Сообщение о локальной точке останова - аналогично GE, но сбрасывается при переключении задач.
GEi - Глобальный уровень разрешения контрольных точек. Разрешается реакция на контрольную точку вне зависимости от переключения задач.
LEi - Локальный уровень разрешения контрольных точек. Разрешается реакция на контрольную точку только внутри текущей задачи. Биты LEi автоматически сбрасываются при переключении задачи.
BT - Ловушка переключения задач. Устанавливается, если исключение 1 имело место из-за переключения на задачу с установленным битом ловушки T в TSS.
BS - Ловушка пошагового режима. Устанавливается, если исключение 1 имело место из-за установленного бита TF регистра EFLAGS.
BD - Отказ при обращении к регистрам отладки при установленном бите GD.
Bi - Отказ/ловушка в контрольной точке i. Бит устанавливается при выполнении оговоренных условий, даже если контрольная точка в данный момент запрещена (сброшены поля GE,LE).
ПРИМЕЧАНИЕ:
В регистре EFLAGS имеется флаг маски
ошибок - бит RF (16). Этот бит
используется при отладке. Если он
установлен, то любая ошибка отладки
при выполнении следующей команды
игнорируется.
Бит автоматически сбрасывается при
успешном выполнении команды.