Использование отладчика
Отладчик 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.Ее на-
значение — цикличес кое изменение содержимого активного поля.
Сам процесс отладки программы ничем не отличается от процесса отладки про-
граммы для основного процессора.
Дата добавления: 2015-04-15; просмотров: 956;