Использование отладчика

Отладчик Turbo Debuger предоставляет широкие возможности для отладки про-

грамм,использующих сопроцессор.Для наблюдения за состоянием регистров,со-

ставляющих программную модель сопроцессора в среде Turbo Debuger,необходи-

мо открыть специальное окно Numeric processor.Для этого выберите пункт главного

меню View > Numeric processor или нажмите сочетание клавиш Alt+V и далее N.По

умолчанию окно появится в компактном виде.Для того чтобы раскрыть его пол-

ностью,щелкните мь шью на стрелке в правом верхнем углу окна.

В заголовке окна отображаются четыре сообщения.

Модель сопроцессора (автоматически определяется отладчиком).

«IPTR=...» — сообщение о текущем содержимом указателя команд.Этот указа-

тель содержит физический (20-разрядный)адрес памяти,по которому распо-

ложена последняя выполнявшаяся инструкция сопроцессора.

ж «OPTR=...» — coo эщение об адресе памяти,к которому обращалась последняя

команда сопроцессора (если она имела адресный операнд).

9 «OPCODE=...» — |сообщение о коде операции последней исполняемой коман-

ды сопроцессора.Интересно отметить то,как формирует отладчик код опера-

У!Ы отмечали,что машинный код операции всех команд со-

сется с одинаковой последовательности битов — 11011,

ции в этом поле,

процессора начи

поэтому в поле OPCODE эти биты отбрасываются.Например,код команды fid —

Od906h (в двоичнфм виде — 1101 1001 0000 ОНО).Убираем пять битов,одина-

ковых для кода операции каждой команды сопроцессора,и получаем то,чтовидим в поле OPCODE заголовка окна Numeric processor,— 0106h (0000 0001 0000

ОНО).

В окне Numeric processor выделяются три области.Сразу заметим,что в отличие

от областей окна CPU области окна Numeric processor нельзя раскрывать отдельно.

Основную часть окна Numeric processor занимает область Registers,которая отража-

ет состояние восьми регистров стека сопроцессора ST(0)...ST(7).Указываются только

логические номера регистров.Наиболее полная информация о регистрах стека

предоставляется,если окно Numeric processor развернуто.Рассмотрим поля Registers,

описывающие состояние каждого из регистров стека сопроцессора.Первое поле

показывает состояние регистра.Возможные значения в этом поле следующие:

EMPTY -«пустой»;

VALID — в регистре корректное вещественное число;;

ZERO — в поле нулевое значение;

NaN — в регистре находится специальное численное значение — нечисло (Not

a Number).

Второе поле показывает логический номер регистра стека.Третье поле содер-

жит значения в регистре в виде 80-разрядного числа с плавающей точкой.Четвер-

тое поле показывает содержимое регистра стека в шестнадцатеричном виде.

В ходе отладки вы можете влиять на содержимое регистров стека.Для этого

в области Registers можно вызвать контекстное меню,активизируемое правой кноп-

кой мыши.В меню три команды:

в ZERO — обнуление содержимого регистра;

• EMPTY — освобождение регистра стека,при этом содержимое самого регистра

стека не изменяется,а изменению подвергается только тег в регистре тегов,

в который заносится значение lib;

it CHANGE — запись в регистр стека некоторого значения,которое должно быть

в допустимом формате в соответствии с синтаксисом ассемблера.

Следующую область окна Numeric processor условно можно назвать Control.Об-

ласть Control содержит совокупность полей,названия которых совпадают с назва-

ниями битов или полей битов в регистре управления сопроцессором CWR.Пере-

числим эти поля:

.1 1 IM — маска недействительной операции;

DM — маска денормализованного операнда;

ZM — маска деления на нуль;

ОМ — маска переполнения;

- UM — маска отрицательного переполнения;

РМ — маска точности;

IEM — маска запроса на прерывание (для i8087);

.PC — поле управления точностью;

RC — поле управления округлением;

1C — поле управления значением бесконечности. Контекстное меню области Control содержит всего одну команду — Toggle.Ее

назначение — циклическое изменение содержимого активного (в котором нахо-

дится курсор)поля.

Третья область ок та Numeric processor — Status — содержит совокупность полей,

названия которых совпадают с названиями битов или полей битов в регистре со-

стояния сопроцессор 1SW R:

IE — ошибка недействительной операции;

'DE — ошибка дено{>мализованного операнда;

-ZE — ошибка делещия на нуль;

ОЕ — ошибка переполнения;

UE — ошибка отрицательного переполнения;

-РЕ — ошибка точности;

• IR — маска запросу на прерывание;

-СС — код условия (состояние битов СЗ,С2,С1,СО);

-ST — указатель вер шины стека (поле ТОР регистра SWR).

Контекстное меню области Status содержит всего одну команду — Toggle.Ее на-

значение — цикличес кое изменение содержимого активного поля.

Сам процесс отладки программы ничем не отличается от процесса отладки про-

граммы для основного процессора.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: