Отладка программ i486.

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. Обращение возможно только из нулевого кольца привилегий.

Всего имеется восемь регистров, их назначение:

Назначение битов:

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). Этот бит используется при отладке. Если он установлен, то любая ошибка отладки при выполнении следующей команды игнорируется.
Бит автоматически сбрасывается при успешном выполнении команды.


Stay-at-home