Системный отладчик - Спецификация формата ссылки
Системный отладчик - Спецификация формата ссылки
Ссылка на адрес на диске или виртуальный адрес 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".