Допустимые и недопустимые сочетания параметров — КиберПедия 

Индивидуальные очистные сооружения: К классу индивидуальных очистных сооружений относят сооружения, пропускная способность которых...

Биохимия спиртового брожения: Основу технологии получения пива составляет спиртовое брожение, - при котором сахар превращается...

Допустимые и недопустимые сочетания параметров

2022-10-05 21
Допустимые и недопустимые сочетания параметров 0.00 из 5.00 0 оценок
Заказать работу

Часть параметров редактора связей, называемых информационными (-h, -?, -t, -p), не могут быть использованы совместно с другими, не входящими в данную группу. Основной целью данных параметров служит предоставление пользователю информации о порядке запуска редактора, используемых входных параметрах, версии, местоположении. При этом, встретив информационный параметр, редактор связей прекращает работу. Например, встретив комбинацию входных параметров

-q=file.log test.elf -h

редактор связей не запустит процесс обработки входного объектного файла, а только выдаст в file.log справочную информацию со списком ключей управления.

Для каждого типа выходного файла существует свой набор входных параметров. Далее перечислены наборы входных параметров для каждого типа выходного файла, порождаемого редактором связей.

Табл. 4‑6 Набор входных параметров абсолютного исполняемого файла.

Параметры Примечание
-a абсолютный исполняемый файл.
-c<имя_файла> назначение файла конфигурации.
-heap=[размер] размер кучи в локальной памяти (в словах).
-heap1=[размер] размер кучи в глобальной памяти (в словах).
-heap2=[размер] размер третьей кучи (в словах).
-heap3=[размер] размер четвертой кучи (в словах).
-stack=[размер] размер стека (в словах).
-start=<имя_метки> точка входа в программу.
-asm отключение поддержки инициализации глобальных статических объектов в языке Си++.
-l<имя_каталога> Путь к каталогу библиотечных файлов.
-d0 Запрещение удаления неиспользуемых секций
-d1..3 Сохранение отладочной информации в режиме удаления неиспользуемых секций.
-d4 Удаление всей отладочной информации и неиспользуемых секций.
-m<имя_файла> создание карты памяти абсолютного исполняемого файла.

 

Табл. 4‑7 Набор входных параметров исполняемого перемещаемого файла.

Параметры Примечание
-r Исполняемый перемещаемый файл.
-heap=[размер] размер кучи в локальной памяти (в словах).
-heap1=[размер] размер кучи в глобальной памяти (в словах).
-heap2=[размер] размер третьей кучи (в словах).
-heap3=[размер] размер четвертой кучи (в словах).
-stack=[размер] размер стека (в словах).
-start=<имя_метки> Точка входа в программу.
-asm Отключение поддержки инициализации глобальных статических объектов в языке Си++.
-l<имя_каталога> Путь к каталогу библиотечных файлов.
-d0 Запрещение удаления неиспользуемых секций
-d1..3 Сохранение отладочной информации в режиме удаления неиспользуемых секций.
-d4 Удаление всей отладочной информации и неиспользуемых секций.

 

Табл. 4‑8 Набор входных параметров объектного файла.

Параметр Примечание
-e Объектный файл.

 

Попытки комбинировать входные параметры, входящие в разные наборы, может в лучшем случае привести к игнорированию части параметров с выдачей предупреждений, в худшем - процесс создания выходного файла будет остановлен с выдачей сообщения об ошибке. Действительно, попытка одновременного задания типа выходного файла (-e) и точки входа (-start=<имя_метки>) должна привести к игнорированию второго параметра, а одновременное использование ключей -е и -а к ошибке.

Файл конфигурации

Файл конфигурации используется редактором связей только при создании абсолютных исполняемых файлов. Он содержит информацию:

· о диапазонах доступных физических адресов и аппаратных характеристиках банков памяти процессора (физическая конфигурация памяти);

· о расположении сегментов прикладной программы в памяти и их размерах (логическая конфигурация памяти);

· о принадлежности секций кода, данных и т.д. программы тем или иным сегментам;

· о выравнивании секций и сегментов по границе страниц памяти или по иным величинам.

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

Файл состоит из произвольного количества блоков описаний трех типов:

· описаний памяти (MEMORY),

· описаний сегментов (SEGMENTS),

· описаний секций (SECTIONS).

 

Пример файла конфигурации:

MEMORY /* Физическая конфигурация памяти */

{

 LOCAL0 at 0x00000000, len = 0x00100000, page = 0x10000;

 LOCAL1 none;

 

 GLOBAL0 at 0x80000000, len = 0x00100000;

 GLOBAL1 at 0x80100000, len = 0x00100000;

}

 

SEGMENTS /* Логическая конфигурация памяти (сегменты) */

{

name1 in GLOBAL0, length = 0x1000;

name2 in GLOBAL1, len = 1024;

name3 at 0x30000000, l = 2048;

name4 in LOCAL0;

}

 

SECTIONS /* Размещение секций по сегментам */

{

.text in name2, align page;

.data in name1;

.text1 in name1, align page;

.nobits in name3;

.heap at 0x10020000;

.stack at 0x00010000;

}

 

Если секции MEMORY и SECTIONS отсутствуют, то редактор связей предполагает, что используется модель памяти по умолчанию. В этом случае все секции объектного файла размещаются по адресам, начиная с 0х00000000, в порядке поступления.

Численные значения могут быть записаны в десятичном и шестнадцатеричном форматах так же, как в языках Cи/Cи++: десятичное значение состоит из десятичных цифр и начинается не с нуля, шестнадцатеричные значения имеют префикс 0x, за которым следует последовательность шестнадцатеричных цифр 0..9, A..F, a..f.

Секция MEMORY

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

Для каждого банка памяти выставляются следующие параметры:

LOCAL0 LOCAL1 GLOBAL0 GLOBAL1 - имена банков памяти;
len - размер банка памяти
page - размер страницы банка памяти.

Банки памяти.

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

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

Пример секции MEMORY:

MEMORY /* Физическая конфигурация памяти */

{

 LOCAL0 at 0x00000000, len = 0x00100000, page = 0x10000;

 LOCAL1 none;/* Банк 1 локальной памяти отсутствует. */

 

 GLOBAL0 at 0x80000000, len = 0x00100000;

 GLOBAL1 at 0x80100000, len = 0x00100000;

}

Модель памяти по умолчанию

Когда файл конфигурации не задан, или в нем отсутствует секция MEMORY, редактор связей использует модель памяти по умолчанию. Эта модель основана на архитектуре процессоров серии 1879ВМ, и предполагает, что пользователю доступно все 32-х битное адресное пространство. Начальный адрес размещения исполняемого файла в памяти процессора полагается равным 0х00000000. Для загрузки абсолютных исполняемых файлов создается один безразмерный сегмент. Секции укладываются в сегмент в порядке поступления, однако существует две очереди размещения. В первую очередь попадают секции инициализированных данных, во вторую неинициализированных. Такой подход позволяет размещать в сегменте сначала инициализированные секции, а затем неинициализированные.

Секция SEGMENTS

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

Каждый сегмент имеет следующие атрибуты:

Имя - имя сегмента, не более 32 символов. Для задания имени могут использоваться символы: A-Z, a-z,., _. Не допускаются пробелы внутри имен. Имя сегмента не входит ни в одну таблицу имен, задается только для удобства чтения файла конфигурации и для выдачи информации об ошибках.
Length или len или l - размер сегмента. Может быть опущен. Тогда сегмент имеет возможность раздуваться до пределов банка, в котором он определен. Размер сегмента ограничивает его максимальный объем. Реально сегмент может иметь и меньший размер, поскольку этот размер определяется размерами входящих в него секций.

 

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

Принадлежность сегмента тому или иному банку определяется использованием ключевого слова in. Если в банке расположено несколько сегментов, то они выстраиваются друг за другом, в порядке, определенном в файле конфигурации. При этом адрес каждого сегмента вычисляется только после размещения всех сегментов, однако он лежит в пределах границ адресов банка, которому принадлежит.

Сегменту можно назначать точный адрес в памяти при помощи ключевого слова at. Он должен принадлежать диапазону доступных физических адресов процессора. Таким образом, адрес данного сегмента задается заранее, а распределение остальных сегментов осуществляется с учетом этого факта.

Пример секции SEGMENTS:

SEGMENTS /* Логическая конфигурация памяти (сегменты) */

{

name1 in GLOBAL0, length = 0x1000;

name2 in GLOBAL1, len = 1024; // сегмент с ограниченным сверху размером

name3 at 0x30000000, l = 2048;// сегмент с определенным адресом

name4 in LOCAL0;         // сегмент с плавающим размером

}

Сегменту можно не задавать размер, тогда редактор связей сам вычислит его. Размер сегмента определяется, как сумма размеров входящих в него секций с учетом их выравнивания. Реально сегмент может содержать как секции, определенные в файле конфигурации, так и такие, чье расположение в памяти там не регламентируется, хотя они являются загружаемыми. Плавающий размер сегмента подразумевает, что в него могут добавляться секции, не описанные в файле конфигурации, без каких- либо ограничений в пределах данного банка памяти.

Выравнивание сегмента равно наибольшему выравниванию входящих в него секций. То есть, если сегмент состоит из трех секций, при этом одна из них выровнена по границе страницы памяти, а остальные по границе 64-х разрядного слова, то весь сегмент будет выровнен по границе страницы памяти.


Поделиться с друзьями:

Общие условия выбора системы дренажа: Система дренажа выбирается в зависимости от характера защищаемого...

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

История развития хранилищ для нефти: Первые склады нефти появились в XVII веке. Они представляли собой землянные ямы-амбара глубиной 4…5 м...

Типы сооружений для обработки осадков: Септиками называются сооружения, в которых одновременно происходят осветление сточной жидкости...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.022 с.