ldis(1)

НАЗВАНИЕ
Дисассемблер

СИНТАКСИС
ldis [опции] <файл кода> [<объект>] ...

ОПИСАНИЕ

Дисассемблер предназначен для мнемонической печати объектов и диагностической печати таблиц файлов двоичного кода микропроцессора "Эльбрус". Реализована как сквозная печать всех объектов кода, так и конкретных объектов по выбору. Дисассемблер является единой программой, использующей интерфейс командной строки. Обращение к дисассемблеру имеет следующий вид:

ldis <параметры> <имя входного файла> [ <объект> ... ]

Обязательными параметрами являются имя входного файла или опция "-h", по которой программа напечатает список всех возможных параметров. Сразу после имени входного файла может быть подан список объектов. В зависимости от поданной опции, объект - это: -символьное имя процедуры ( по умолчанию ); -индекс в символьную таблицу ( десятичное число, опция '-e'); -адрес объекта по файлу кода ( 16-тиричное число, опция '-a' ); -символьное имя не процедуры ( опция '-s' ).

Остальные параметры вызова могут быть переданы программе в любом порядке.

Дисассемблеру в качестве обязательного параметра должен быть подан файл, содержащий двоичный код микропроцессора "Эльбрус". Это может быть как файл объектного кода, так и слинкованная программа. При печати статистики дисассемблер требует наличия файла статистики исполнения команд. Файл статистики создается автоматически при исполнении программы на интерпретаторе при задании соответствующих опций. Данный режим работы дисассемблера имеет смысл только для слинкованной программы. Имя файла статистики получается из имени файла кода добавлением расширения '.pstat'. Дисассемблер ищет файл статистики в текущем каталоге, задавать его явно через опции не требуется.

Дисассемблер реализует следующие виды печатей:

1)Печать кода.

2)Печать статистики. Реализованы следующие режимы печати статистики:

-Печать профиля исполнения программы;

-Печать профиля исполнения по префиксам процедур;

-Печать статистики исполнения элементарных операций;

-Печать кода процедуры со статистикой исполнения.

3)Печать символьной таблицы.

4)Печать таблицы перемещений.

ОПЦИИ

Опции, в состав которых входит ЧИСЛО или ИМЯ, требуют указания численного параметра или символьного имени, соответственно. ЧИСЛО - это набор символов, не содержащий пробелы, который может трактоваться как конструкция 'изображение числа' в терминах языка C. ЧИСЛО может быть задано в шестнадцатеричном (с указанием впереди '0x') и в десятичном виде. ИМЯ - это набор символов, не содержащий пробелы. Порядок следования символов не оговаривается. Опции, не требующие параметра, можно объединять между собой. В дизассемблере реализованы следующие опции:

-a  ЧИСЛО
    Печать объекта с заданным адресом по файлу кода

-as Печать элементов символьной таблицы по адресам

-b  ЧИСЛО
    Задает адрес, начиная с которого располагается код в памяти

-e  ЧИСЛО
    Печать объекта по индексу в символьную таблицу

-h  Печать списка опций

-F  Печать версии системы команд и магического числа

-Fe Печать заголовка кодового файла и заголовка программы

-Fh Печать заголовка секций кодового файла

-Fd Печать динамической секции кодового файла

-G  Сбор статистики использования в коде комад ALU. Создается файл статистики 'имя файла'.ldis.instr.stat. Печать статистики короткая(только использованные команды)

-GN Тоже, что '-G', только без печати на экран

-GG Cчитывание cтатистики из файлов с суффиксом '.ldis.instr.stat' и формирование суммарного файла 'result.ldis.instr.stat'. Выдача на экран короткой печати статистики

-GF Тоже, что '-GG', только полная печать ( все команды со счетчиками)

-GS Тоже, что '-G', но кроме команд ALU еще команды управления и предикатные

-GT Тоже, что '-GF', но для статистики, собраной по '-GS'

-I  Печать кода функции со статистикой исполнения по командам

-J  То же, что -I, но без печати нулевых полей

-T  Печать кода функции со статистикой исполнения по командам, файл .mtrace

-Tz Печать кода функции со статистикой исполнения по командам, файл .mtrace без печати нулевых полей

-K  Печать профиля кода по префиксам на основе статистики исполнения

-L  Печать статистики исполнения элементарных операций

-K  Печать профиля кода по префиксам на основе статистики исполнения

-L  Печать статистики исполнения элементарных операций

-H  Тоже, что '-L', но только для горячих регионов

-D  Отладочная печать статистики исполнения элементарных операций

-M  ЧИСЛО
    Задает число , которое будет прибавлено к адресу команды при печати кода

-N  Для фунций с размером 0 - ищет следующий символ в секции и печатает до него

-n[fmnrsd]
    Печатать символьной таблицы в формате команды 'nm'

-nf Печать элементов, имеющих признак функции и ненулевой размер

-nm Печать всех элементов по старшинству имен (по умолчанию)

-nn Печать всех элементов по порядку номеров

-nr Печать в обратном порядке

-nv Печать в порядке увеличения 'value'

-ns Печать только статических символьных таблиц

-nd Печать только динамических символьных таблиц

-o  Печать соответствия кода и текста на основе старых таблиц ( по умолчанию берутся dwarf-таблицы )

-q  Короткая печать объекта с заданным адресом ( печатается только ссылка в символьную таблицу )

-s  ИМЯ
    Печать объекта - не процедуры по символьному имени

-S[dent]
    Печать выбранной секции

-Sd Печать секции DATA

-St Печать секции TEXT целиком

-Se ЧИСЛО
    Печать секций по номеру в заголовке секций (см. -Fh)

-Sn ИМЯ
    Печать секций по символьному имени секции

-Sde ЧИСЛО

-Sdn ИМЯ
    Сочетание опций - печать секции, по номеру или имени. Содержимое трактуется как данные, по умолчанию - как код

-P  Печать профиля кода по процедурам на основе статистики исполнения

-Ps Печать профиля кода по процедурам на основе статистики исполнения, считывание символьной таблицы из файла *.stab

-R  Печать таблицы перемещений

-V  Печать номера версии программы

-x  Флаг шестнадцатеричной печати. В символьной таблице так печатаются поля 'value' и 'size', а при печати кода - привязка к тексту

-X  Печать кода в форме массива шестнадцатеричных чисел

-B

    Печать бинарного кода

-Bo ЧИСЛО
    Печать бинарного кода с заданным смещением

-j  Печать 'notype' символьных меток

-mcpu=<cpu>
    Печать кода для процессора <cpu>

--me3s
    Печать кода для E3S (устаревшая опция)

--me3m
    Печать кода для E3М (устаревшая опция)

--me2s
    Печать кода для E2S (устаревшая опция)

--full-contents
    Печать содержимого всех секций

--section=ИМЯ
    Печать информации только для секции ИМЯ

--archive-headers
    Печать информации об элементах архива

--archive-member=ИМЯ
    Печать из архива объекта ИМЯ

--demangle
    Деманглировать имена

--function=ИМЯ
    Аналогично передаче имени функции через параметр