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

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

Ссылка на адрес на диске или виртуальный адрес D3. Формат данных и спецификация окна, если они не заданы, сохраняются c предыдущей установки.

Спецификация данных является одним из трех элементов, используемых для обращения к дисковому пространству в системном отладчике; она задает "прямой" или "косвенный" адрес.

Спецификация адреса представляется в виде адреса с предшествующим символом следующим образом:

- .address - Означает, что адрес задан в виде шестнадцатеричного числа

- ,address - Означает, что адрес задан в виде десятичного числа

Ниже показано использование шестнадцатеричного представления по умолчанию:

Прямая ссылка:

!fidaddr.dataaddr -или- !dataaddr

"fidaddr" - это идентификатор (fid) виртуального фрейма, а "dataaddr" - смещение в виртуальном фрейме "fidaddr". Если "fidaddr" не задан, то в качестве фрейма используется "pcb" текущего процесса. Обоим этим параметрам может предшествовать либо точка (.) для шестнадцатеричного представления адреса, либо запятая (,) для десятичного представления.

Косвенные (и символические) ссылки:

!symbolname -или- !/symbolname -или- !*symbolname где "symbolname" - это имя символа, описанного в одном из файлов: "psym", "gsym" или "tsym". В результате выдаются номер регистра, смещение, тип формата и окно для символа. Таблица символов должна быть "установлена" до использования косвенной ссылки на символическое имя.

В окно, размер которого задается либо в описании символа, либо в спецификации окна, выводится не определение области виртуальной памяти, описанной этим символом, а содержимое этой области.

Косвенные ссылки:

/symbolname

В этом примере выводится содержимое переменной (символического имени).

!*symbolname

В этом случае выводится содержимое адреса, который находится в переменной.

!*fidaddr.dataaddr -или- !*dataaddr

Указанный адрес рассматривается как регистр хранения (storage register), используемый для обращения к данным. Смещение "dataaddr" добавляется к адресу фрейма для получения адреса регистра хранения.

Двойные косвенные ссылки:

!**symbolname -или- !**fidaddr.dataaddr -или- !**dataaddr

Это еще один уровень косвенной адресации по сравнению с одной звездочкой (*). Предполагается, что в указанном адресе находится регистр хранения, указывающий на другой регистр хранения, который уже указывает на данные, подлежащие выводу.

Если в случае адресации "*" и "**" первый байт промежуточных данных равен x'82', то эти промежуточные данные рассматриваются как основной косвенный строчный элемент, и практически указатель (регистр хранения) берется в двух байтах от этого места. Если какие-либо из полей данных недействительны как регистры хранения, выдается сообщение "addr".