Наброски и зарисовки растений, плодов, цветов: Освоить конструктивное построение структуры дерева через зарисовки отдельных деревьев, группы деревьев...
Кормораздатчик мобильный электрифицированный: схема и процесс работы устройства...
Топ:
Отражение на счетах бухгалтерского учета процесса приобретения: Процесс заготовления представляет систему экономических событий, включающих приобретение организацией у поставщиков сырья...
Проблема типологии научных революций: Глобальные научные революции и типы научной рациональности...
Техника безопасности при работе на пароконвектомате: К обслуживанию пароконвектомата допускаются лица, прошедшие технический минимум по эксплуатации оборудования...
Интересное:
Подходы к решению темы фильма: Существует три основных типа исторического фильма, имеющих между собой много общего...
Распространение рака на другие отдаленные от желудка органы: Характерных симптомов рака желудка не существует. Выраженные симптомы появляются, когда опухоль...
Наиболее распространенные виды рака: Раковая опухоль — это самостоятельное новообразование, которое может возникнуть и от повышенного давления...
Дисциплины:
2022-10-05 | 25 |
5.00
из
|
Заказать работу |
Использование масок в качестве имен объектных файлов допускается в командах создания (-c), добавления (-a) и замещения (-r). В команде извлечения использование масок не допускается, но имена объектных файлов могут быть опущены, в этом случае извлекаются все файлы. В остальных случаях использование масок не допустимо.
Варианты запуска библиотекаря
В Табл. 5‑2 приведены различные варианты запуска библиотекаря объектных файлов.
Табл. 5‑2 Варианты вызова библиотекаря.
Командная строка | Описание |
libr | Краткая справка об использовании программы. |
libr -h | Краткая справка об использовании программы. |
libr -? | Краткая справка об использовании программы. |
libr libname [filelist] | Просмотр списка файлов библиотеки. |
libr -l libname [filelist] | Просмотр списка файлов библиотеки. |
libr -c libname [filelist] | Создание библиотеки. |
libr -a libname [filelist] | Добавление файлов в библиотеку. |
libr -d libname [filelist] | Удаление файлов из библиотеки. |
libr -e libname [filelist] | Извлечение файлов из библиотеки. |
libr -r libname [filelist] | Замена файлов в библиотеке. |
Примеры работы с библиотекарем
Создание библиотеки
libr -c first.lib *.elf
Эта команда создаст библиотеку с именем first.lib и включит в нее все файлы из текущего каталога, имеющие расширение elf. Если файл с именем first.lib уже существует в текущем каталоге, он будет предварительно удален.
Приведенную команду можно также записать в виде:
libr -c first *.elf,
поскольку расширение.lib используется библиотекарем для библиотек по умолчанию. Если необходимо создать библиотеку, не имеющую расширения, необходимо ставить точку после имени библиотеки:
libr -c first. *.elf
Эта команда создаст библиотеку с именем first.
Добавление объектных файлов в библиотеку
libr -a first.lib *.elf
Если в текущем каталоге есть файл first.lib, то он будет проверен на предмет того, является ли он библиотекой установленного формата, и затем в него будут добавлены все объектные файлы формата Elf из текущего каталога, имеющие соответствующее расширение.
Если в текущем каталоге нет файла first.lib, то действие данной команды ничем не отличается от рассмотренной в п. 5.10.1.
Извлечение объектных файлов из библиотеки
libr -e library.lib single.elf
В результате действия этой команды из библиотеки library.lib будет извлечен файл с именем single.elf.
Библиотека при этой операции не изменяется.
Извлечение из библиотеки всех файлов
libr -e library.elf
В результате действия этой команды из библиотеки library.lib будут извлечены все файлы.
Библиотека при этой операции не изменяется.
Несмотря на то, что файлы могут помещаться в библиотеку с запоминанием относительного или абсолютного пути, при извлечении путь отсекается от имени файла, и все файлы помещаются в текущий каталог. Если в библиотеке содержались два файла с одинаковым именем (с разными путями), то при одновременном извлечении этих двух файлов, второй затрет первый. В данной ситуации файлы необходимо извлекать по одному, указывая полное имя файла (включая путь).
Замена файла в библиотеке
libr -r lib a1.elf
В результате действия этой команды, файл a1.elf, передаваемый в качестве входного параметра, заменит файл с тем же названием в библиотеке lib. Если в библиотеке нет указанного файла, то будет выдано соответствующее предупреждение, и файл будет добавлен в библиотеку.
Удаление файла из библиотеки
libr -d lib a1.elf
В результате действия этой команды, файл a1.elf, передаваемый в качестве входного параметра, будет удален из библиотеки lib. Если в библиотеке нет указанного файла, то будет выдано соответствующее предупреждение, и выходной файл с именем a1.elf не будет создан. Для того, чтобы удалить из библиотеки несколько файлов, необходимо их все перечислить в командной строке.
Сообщения об ошибках
Библиотекарь в процессе работы может столкнуться с некорректными данными. В этом случае он выдает сообщение не экран. Для выдачи сообщений на экран библиотекарь использует форматированную строку. Ее формат является единым для всего комплекса NMSDK и имеет следующий вид:
“[имя_файла]”: тип_ошибки номер_ошибки: сообщение_об_ошибке.
где:
имя_файла | - | имя файла, при разборе внутренней структуры которого произошла ошибка. Поле имя_файла может отсутствовать, когда ошибка произошла вне блока разбора входных файлов. |
тип_ошибки | - | один из типов ошибок, приведенных ниже в этом разделе. |
код_ошибки | - | символьное обозначение ошибки. Представляет собой буквенно-цифровой код, три первых символа которого являются сокращением названия программы, породившей сообщение об ошибке, а остальные ее номер. Каждая программа NMSDK имеет автономную нумерацию ошибок. Пример кода ошибки: LBR412. |
сообщение_об_ошибке | - | краткая справочная информация о причине возникновения ошибочной ситуации в ходе работы данной программы NMSDK. |
Например:
ОШИБКА LBR407: Библиотека "AAA.ELF" не найдена.
Все некорректные ситуации библиотекарь делит на четыре группы, которым соответствуют четыре типа ошибок:
· предупреждения. Предупреждение появляется, когда возникшая некорректная ситуация может повлиять на конечный результат работы библиотекаря, однако библиотекарю хватает информации для создания правильного выходного файла. Например, предупреждение появляется, когда одна из входных директив не может быть использована в данном режиме работы библиотекаря. Работа при этом не прекращается.
· ошибки. Ошибка возникает, когда из-за некорректных входных данных библиотекарь не в состоянии создать правильный выходной файл. В такой ситуации на экран выдается сообщение об ошибке, а библиотекарь прекращает работу и возвращает ненулевое значение,
· внутренние ошибки. Внутренняя ошибка может возникнуть из-за неправильной работы самого библиотекаря. При возникновении такой ситуации все исходные данные желательно передать разработчикам для устранения дефектов. В такой ситуации на экран выдается сообщение о внутренней ошибке, а библиотекарь прекращает работу и возвращает ненулевое значение,
· фатальные ошибки. Фатальная ошибка возникает в случае нехватки памяти для работы библиотекаря. Она указывает на то, что в сложившейся ситуации работа библиотекаря с данными входными параметрами не может быть продолжена. Необходимо изменить параметры системы.
Предупреждения
LBR001 | "Ошибка при получении времени создания файла..., устанавливается текущее время." |
- не удается выяснить время создания файла. При записи в библиотеку ставится текущее время. |
Ошибки
LBR401 | "Отсутствует управляющий входной параметр." |
- отсутствует команда управления библиотекарем (первый параметр). | |
LBR401 | "Имя библиотеки не определено." |
- отсутствует имя библиотеки. | |
LBR401 | "Не могу прочитать входной параметр номер:..." |
- отсутствует параметр. Нумерация параметров ведется с команды управления библиотекарем, которая определена, как первый параметр библиотекаря. | |
LBR402 | "Неизвестная команда..." |
- неверная команда. | |
LBR403 | "Файл... не является библиотекой." |
- неверный формат библиотеки. | |
LBR404 | "Файл... не является библиотекой (...)." |
- неверный формат библиотеки; В отличие от LBR403 в данном случае выводится оригинальное сообщение библиотеки LIBELF. | |
LBR405 | "Файл... уже существует в библиотеке." |
- файл с данным именем уже находится в библиотеке. | |
LBR406 | "Символ... (файл...") уже определен в библиотеке." |
- невозможно добавить файл в библиотеку, т.к. файл содержит глобальный символ с именем, уже присутствующей в таблице символов библиотеки. Указывается имя символа и имя файла, которые не удалось добавить в библиотеку. | |
LBR407 | "Библиотека... не найдена." |
- библиотека с заданным именем не найдена в указанном каталоге. |
Внутренние ошибки
LBR801 | "Неизвестный рабочий режим:..." |
- неверный режим работы (наведенная ошибка в результате сбоя программы или системы). | |
LBR80 2 | "Не могу придумать имя временного файла." |
- неудачная попытка создать имя временного файла или наведенная ошибка. | |
LBR80 3 | "Нулевой элемент в списке файлов." |
- неверный элемент в списке файлов. |
Фатальные ошибки
LBR950 | "Ошибка при запросе... байтов памяти" |
- данная ошибка возникает, когда недостаточно памяти для работы библиотекаря. Попытка выделения очередного массива в области динамической памяти для размещения внутренних структур оканчивается неудачей. В результате работа не может быть продолжена. Для исправления данной ситуации необходимо освободить динамическую память. Например, выгрузить некоторые резидентные программы, или увеличить свободное место на диске, на котором создается временный системный файл. |
6 Декодер объектных и исполняемых файлов
Введение
В данной главе приведено описание интерфейса и режимов работы декодера объектных и исполняемых файлов (далее – дампер) из состава NMSDK.
Дампер предназначен для декодирования объектных файлов, объектных библиотек и исполняемых файлов формата ELF, что позволяет пользователю просматривать содержимое данных файлов.
Дампер представляет собой приложение Win32 приложение.
Формат вызова дампера
Формат вызова дампера:
dump [ключи] источник [>приемник] |
где:
dump | - | Имя исполняемого файла дампера. |
ключи | - | Список параметров (ключей), управляющих работой дампера. Могут располагаться в произвольном месте командной строки, в произвольной последовательности. |
источник | - | Список имен декодируемых бинарных файлов. |
> приемник | - | Имя файла, в который дампер выводит информацию. Если имя файла-приемника не указано, то дампер выводит информацию на экран. |
Пример: dump MyApp.abs >MyApp.dmp
Примечание: | Если дампер вызывается без параметров в командной строке, то дампер выводит справочную информацию о себе: название, номер версии, формат вызова, список управляющих ключей. Если в командной строке не указан не один из ключей (как в приведённом примере), то дампер выводит полную информацию о файле. |
Параметры дампера
Табл. 6‑1. Список параметров управления дампером.
Параметры | Описание |
-h | Не выводить заголовок дампера. |
-e | Не выводить заголовок ELF-файла. |
-p | Не выводить таблицу сегментов. |
-s | Не выводить таблицу заголовков секций. |
-d | Не выводить содержимое секций. |
-a | Адресная единица – 32-битное слово (установлено по умолчанию для выполняемых файлов). |
-b | Адресная единица – 8-битное слово (установлено по умолчанию для объектных файлов). |
-f | Не выводить содержимое библиотеки (только для библиотек). |
-w | Выводить секции отладочной информации (DWARF-секции) как секции данных: без интерпретации. |
Обработка тел секций
Секции, имя которых начинается с “text” или “.text” воспринимаются дампером как секции кода. Дампер их дизассемблирует и представляет в следующем виде:
Рис. 6‑1. Фрагмент дизассемблированной секции кода.
Если имя секции не имеет следующий вид: “.text MySectionName ”, или “text MySectionName ” или просто “text”, секции не будут дизассемблированы и будут представлены в виде шестнадцатеричного кода.
Секции, имя которых начинается с префикса “.dwarf”, воспринимаются дампером как секции отладочной информации. Если не установлен ключ –w, содержимое данных секций будет проинтерпретировано дампером, в противном случае отладочная информация будет выведена без интерпретации в виде шестнадцатеричного кода.
Пример декодированного исполняемого файла
Ниже приведен пример информации, выдаваемой дампером при декодировании исполняемого файла.
---------------------------
File: test0.abs
ELF Header:
Identification bytes:
File class: 32 bits class
Data encoding: low significant byte first
ELF version: Current version
File type: Executable absolute file
Target machine: NeuroMatrix
ELF version: Current version
Entry address: 0xc0000000
Program Segment Header Table offset: 0x34
Section Header Table offset: 0x238
User define flags: 0x0
ELF header size: 0x34
Program Segment Header size: 0x20
Number of Program Segments: 3
Section Header size: 0x28
Number of Sections: 5
Index of.shstrtab sections: 1
Program Segment 0
-----------------------------------
Type: Loadable
File offset: 0xb8
Begin virtual address: 0x0
Begin physical address: 0xc0000000
Size in file: 0xe0
Size in memory: 0xe0
Segment flags: 0x0
Alignment: 8
Program Segment 1
-----------------------------------
Type: Loadable
File offset: 0x198
Begin virtual address: 0x0
Begin physical address: 0xc0000038
Size in file: 0x18
Size in memory: 0x18
Segment flags: 0x0
Alignment: 8
Program Segment 2
-----------------------------------
Type: Loadable
File offset: 0x1b0
Begin virtual address: 0x0
Begin physical address: 0xc000003e
Size in file: 0x88
Size in memory: 0x88
Segment flags: 0x0
Alignment: 8
Section:.shstrtab index:1
-----------------------------
Type: String table
Flags:
Load address: 0x0
Offset in file: 0x94
Size: 0x22
Link: 0
Info: 0
Align address: 1
Entity size: 0
Section:.text_init index:2
-----------------------------
Type: Program defined bytes
Flags: Allocate memory in process image
Load address: 0xc0000000
Offset in file: 0xb8
Size: 0xe0
Link: 0
Info: 0
Align address: 8
Entity size: 0
Section:.text index:3
-----------------------------
Type: Program defined bytes
Flags: Allocate memory in process image
Load address: 0xc0000038
Offset in file: 0x198
Size: 0x18
Link: 0
Info: 0
Align address: 8
Entity size: 0
Section:.data index:4
-----------------------------
Type: Program defined bytes
Flags: Allocate memory in process image
Load address: 0xc000003e
Offset in file: 0x1b0
Size: 0x88
Link: 0
Info: 0
Align address: 8
Entity size: 0
Section.shstrtab
.shstrtab
.text_init
.text
.data
Section.text_init
c0000000: 00002748 0e0000c0 * goto c000000e with nul
c0000002: 00001050 *nul with nul
c0000003: 00001050 *nul with nul
c0000004: 00001050 *nul with nul
c0000005: 00001050 *nul with nul
c0000006: 0000274c feffffff * skip fffffffe with nul
c0000008: 00001050 *nul with nul
c0000009: 00001050 *nul with nul
c000000a: 00000000 * nul
c000000b: addeadde illegal instruction with gr5 = true
c000000c: 00000000 * nul
c000000d: 00001050 *nul with nul
c000000e: 00008043 fff780e8 *gmicr=e880f7ff set with nul
c0000010: 00f50300 *rep 32 vnul with 0
c0000011: 00001050 *nul with nul
c0000012: 00001040 20000000 *nul 00000020 with nul
c0000014: 00004043 93d625e2 *lmicr=e225d693 set with nul
c0000016: 00000043 f4fcffff *t0=fffffcf4 set with nul
c0000018: 0000404f 00c00cc0 *pswr set c00cc000 with nul
c000001a: 00004047 00c00000 *pswr reset 0000c000 with nul
c000001c: 00001050 *nul with nul
c000001d: 00001050 *nul with nul
c000001e: 00001050 *nul with nul
c000001f: 00001050 *nul with nul
c0000020: 00001050 *nul with nul
c0000021: 00001050 *nul with nul
c0000022: 00001050 *nul with nul
c0000023: 00001050 *nul with nul
c0000024: 00001050 *nul with nul
c0000025: 00001050 *nul with nul
c0000026: 00000044 defadefa *gr0=fadefade set with nul
c0000028: 0000c041 3e0000c0 *ar7=c000003e set with nul
c000002a: 0000274a 380000c0 * call c0000038 with nul
c000002c: 00001050 *nul with nul
c000002d: 00001050 *nul with nul
c000002e: 00001062 0a0000c0 *[c000000a]=gr0 with nul
c0000030: 00004044 17000000 *gr1=00000017 set with nul
c0000032: 00001162 0c0000c0 *[c000000c]=gr1 with nul
c0000034: 00002748 060000c0 * goto c0000006 with nul
c0000036: 00001050 *nul with nul
c0000037: 00001050 *nul with nul
Section.text
c0000038: 00000044 00000000 *gr0=00000000 set with nul
c000003a: 0000f703 * return with nul
c000003b: 00001050 *nul with nul
c000003c: 00001050 *nul with nul
c000003d: 00001050 *nul with nul
Section.data
c000003e: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00................
c0000042: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00................
c0000046: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00................
c000004a: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00................
c000004e: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00................
c0000052: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00................
c0000056: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00................
c000005a: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00................
c000005e: 00 00 00 00 00 00 00 00 ........
7 Эмулятор процессора на уровне инструкций
Введение
В данной главе описан интерфейс, управляющие параметры и режимы работы эмулятора процессоров серии 1879ВМ на уровне инструкций из состава NMSDK.
Функциональное назначение
Эмулятор процессоров серии 1879ВМ на уровне инструкций, далее эмулятор, предназначен для моделирования исполнения программ для процессоров серии 1879ВМ. Эмулятор запускается только из командной строки.
Формат запуска эмулятора
emurun [параметры] [исполняемый_файл] |
emurun | - | Имя файла, содержащего исполняемый код эмулятора. |
параметры | - | Список параметров (ключей), управляющих работой эмулятора. Могут располагаться в произвольном месте командной строки, в произвольной последовательности. |
Исполняемый файл | - | Имя исполняемого файла. |
Пример: emurun MyApp.abs
Эмулятору задается один исполняемый файл, вместе с параметрами исполнения. Эмулятор выдает информацию о результате выполнения на стандартный вывод.
При запуске команды emurun без параметров, эмулятор выдает информацию об использовании программы и список параметров.
Параметры эмулятора
Табл. 7‑1. Список параметров эмулятора на уровне инструкций.
Параметры | Описание |
-S | Проверять указатель стека (ar7) на четность. |
-m<значение> | Задать размер банка памяти (по умолчанию 64000x32 бит). |
-B | Проверять кремниевые ошибки процессора NM6403 (только некоторые). |
-4 | Эмулировать процессор NM6404. |
Автоматическое растормаживание колес: Тормозные устройства колес предназначены для уменьшения длины пробега и улучшения маневрирования ВС при...
История создания датчика движения: Первый прибор для обнаружения движения был изобретен немецким физиком Генрихом Герцем...
Механическое удерживание земляных масс: Механическое удерживание земляных масс на склоне обеспечивают контрфорсными сооружениями различных конструкций...
Семя – орган полового размножения и расселения растений: наружи у семян имеется плотный покров – кожура...
© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!