Использование wildcards (масок) — КиберПедия 

Наброски и зарисовки растений, плодов, цветов: Освоить конструктивное построение структуры дерева через зарисовки отдельных деревьев, группы деревьев...

Кормораздатчик мобильный электрифицированный: схема и процесс работы устройства...

Использование wildcards (масок)

2022-10-05 25
Использование wildcards (масок) 0.00 из 5.00 0 оценок
Заказать работу

Использование масок в качестве имен объектных файлов допускается в командах создания (-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 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.01 с.