Наброски и зарисовки растений, плодов, цветов: Освоить конструктивное построение структуры дерева через зарисовки отдельных деревьев, группы деревьев...
Семя – орган полового размножения и расселения растений: наружи у семян имеется плотный покров – кожура...
Топ:
Техника безопасности при работе на пароконвектомате: К обслуживанию пароконвектомата допускаются лица, прошедшие технический минимум по эксплуатации оборудования...
Комплексной системы оценки состояния охраны труда на производственном объекте (КСОТ-П): Цели и задачи Комплексной системы оценки состояния охраны труда и определению факторов рисков по охране труда...
Когда производится ограждение поезда, остановившегося на перегоне: Во всех случаях немедленно должно быть ограждено место препятствия для движения поездов на смежном пути двухпутного...
Интересное:
Наиболее распространенные виды рака: Раковая опухоль — это самостоятельное новообразование, которое может возникнуть и от повышенного давления...
Лечение прогрессирующих форм рака: Одним из наиболее важных достижений экспериментальной химиотерапии опухолей, начатой в 60-х и реализованной в 70-х годах, является...
Подходы к решению темы фильма: Существует три основных типа исторического фильма, имеющих между собой много общего...
Дисциплины:
2022-10-05 | 21 |
5.00
из
|
Заказать работу |
|
|
Параметр -asm позволяет редактору связей, необходимых для инициализации статических глобальных объектов в Си++.
Следующий пример связывает воедино файлы file1.elf и file2.elf, и создают абсолютный исполняемый файл, отключая обработку и создание специализированных секций.init и.fini:
linker file1.elf file2.elf -asm -oresult.abs
Если пользователь не использует стандартный стартовый код для запуска программы, то он может удалить упомянутые секции из исполняемого файла. Поскольку секции.init и.fini обрабатываются специальным образом, они не могут быть удалены путем использования ключа -d{1..4}, для этого и введен специальный ключ -asm.
Стартовый код содержит два вызова функций:
call ctor;
call dtor;
Они вызываются соответственно до и после функции __main - главной функции пользовательской программы. Метки ctor и dtor определены в начале секций.init и.fini. Если в программе встречались статические глобальные объекты, поля которых необходимо инициализировать, то в секции.init и.fini добавляются вызовы соответствующих функций инициализации и удаления этих объектов. Если же полей, которые необходимо инициализировать до функции __main нет, то функции ctor и dtor содержат только команды возврата.
Если пользователь использует свою точку входа, а его программа написана на ассемблере и не требует досрочной инициализации статических полей, он может использовать данный ключ, и удалить из исполняемого файла секции.init и.fini.
4.8.8 Определение пути к каталогу библиотечных файлов (ключ -l (строчная "L"))
Параметр -l задает путь к каталогу библиотечных файлов. Если редактор связей при сборке исполняемой программы обнаружил неопределенный глобальный символ, на который существует ссылка, то для определения этого символа он просматривает библиотеки, которые приведены в командной строке и находятся в каталоге, указанном пользователем при помощи ключа -l.
|
Если пользователь хочет подключить библиотеку, которая расположена не в текущем каталоге, то он может добавить ее полное имя в командную строку, или указать при помощи ключа -l каталог, в котором она расположена.
Следующий пример связывает воедино файлы file1.elf и file2.elf, и осуществляет поиск неопределенных глобальных символов в библиотеке mylib.lib, расположенной в каталоге c:\lib:
linker file1.elf file2.elf mylib.lib -l c:\lib -oresult.abs
Между ключом -l и путем к каталогу библиотек не должно быть пробела.
Редактор связей осуществляет поиск библиотек в следующем порядке:
· рассматривает библиотеки, имена которых заданы в командной строке;
· ищет библиотеки с заданными именами в текущем каталоге;
· просматривает каталоги, заданные ключом -l в той последовательности, в которой они перечислены в командной строке или в командном файле.
Если пользователь желает задать несколько каталогов для поиска библиотек, он каждый каталог должен вводить параметр -l:
linker file1.elf file2.elf mylib.lib -l c:\rtl -l c:\lib -oresult.abs
Примечание | Каждая библиотека состоит из определенного числа объектных файлов. Если искомый символ определен в данной библиотеке, это значит, что он определен в одном из объектных файлов, входящих в состав библиотеки. Поэтому только этот файл будет загружен редактором связей для дальнейшей обработки. Если в нем содержится много посторонней информации, не относящейся к определению рассматриваемого символа, она при наличии ключа -d{1..4}будет удалена из конечного исполняемого файла. |
4.8.9 Создание карты памяти (ключ -m<имя_каталога>)
Параметр -m задает имя файла, в который редактор связей запишет информацию о карте распределения памяти для данного выходного файла. Карта памяти создается только для абсолютных исполняемых файлов. Она описывает:
· распределение памяти процессора (адреса и размеры банков),
|
· положение сегментов в банках памяти,
· распределение выходных секций по сегментам,
· положение входных секций в выходных,
· абсолютные адреса всех глобальных символов.
В файле-карте содержится имя выходного файла и точка входа. Кроме того в него включены следующие таблицы:
· таблица, описывающая адреса и размеры банков памяти процессора, размеры страницы памяти каждого банка,
· таблица, описывающая распределение сегментов по банкам памяти. Каждый сегмент имеет несколько атрибутов: принадлежность банку памяти, абсолютный адрес начала и размер,
· таблица, описывающая распределение секций по сегментам. Каждая секция имеет несколько атрибутов таких, как принадлежность сегменту, абсолютный адрес начала и размер. Помимо этого в таблице хранится информация о входных секциях, составляющих выходную, а именно: из какого входного файла данная секция и ее размер,
· таблица, описывающая имена и адреса всех глобальных символов программы.
Следующий пример связывает воедино файлы file1.elf и file2.elf, создает абсолютный исполняемый файл и строит для него карту памяти, сохраняя ее в файле mapfile.map:
linker file1.elf file2.elf -m mapfile.map -oresult.abs
Между ключом -m и именем файла-карты памяти не должно быть пробела.
Имя файла-карты памяти ставится в том случае, если оно отлично от имени выходного файла. По умолчанию имя карты памяти совпадает с именем выходного файла, но имеет расширение ".map". Поэтому тот же пример, но с умалчиваемым значением карты памяти будет выглядеть так:
linker file1.elf file2.elf -m -oresult.abs
,при этом полученный файл-карта памяти будет иметь имя result.map.
4.8.10 Задание файла конфигурации (ключ -c<имя_файла>)
Параметр -c определяет имя файла конфигурации для создания абсолютного исполняемого файла. Файл конфигурации содержит всю информацию, необходимую для правильного размещения программы в памяти процессора. Более подробно файл конфигурации описывается в подразделе 4.11 «Файл конфигурации».
Следующий пример связывает воедино файлы file1.elf и file2.elf, создает абсолютный исполняемый файл и использует для этого файл конфигурации cfgfile.cfg:
linker file1.elf file2.elf -c cfgfile.cfg -oresult.abs
Между ключом -c и именем файла конфигурации не должно быть пробела. Файл конфигурации используется только для создания абсолютного исполняемого файла.
|
Если при создании абсолютного файла ключ -c с именем файла конфигурации не установлен, то редактор связей создает выходной файл с единственным программным сегментом, адрес начала которого равен 0x00000000, а размер неограничен. Неограниченность размера сегмента означает, что он вмещает в себя все загружаемые секции с учетом требований по их выравниванию. Для изменения адреса сегмента необходимо использовать ключ ‑addr, описанный ниже.
4.8.11 Задание адреса сегмента по умолчанию (ключ -addr=<адрес>)
В режиме создания абсолютного исполняемого файла, когда не задан файл конфигурации, редактор связей создает единый сегмент данных и кода, в который входят все загружаемые секции, встреченные редактором во входных файлах. Для задания адреса размещения этого сегмента в памяти процессора используется ключ -addr=<адрес>. В поле "адрес" заносится абсолютный адрес начала сегмента, записанный в шестнадцатеричном виде, например:
linker file1.elf file2.elf -addr=0x00000080;
linker file1.elf file2.elf -addr=0x80000080;
.
Параметры по умолчанию
По умолчанию, при запуске редактора связей с набором входных объектных файлов устанавливаются следующие входные параметры:
Табл. 4‑5 Параметры редактора связей по умолчанию.
Параметр | Состояние | Примечания |
-а | Установлен | В результате работы редактора связей будет создан абсолютный исполняемый файл. |
-d4 | Установлен | Удаляется вся отладочная информация и неиспользуемые секции и символы. |
-heap=0x1000 | Установлен / Не установлен | Начальный размер кучи в локальной памяти равен 4K. Параметр устанавливается по умолчанию в случае включения в список входных файлов библиотеки управления динамической памятью |
-heap1=0x1000 | Установлен / Не установлен | Начальный размер кучи в глобальной памяти равен 4K. Параметр устанавливается по умолчанию в случае включения в список входных файлов библиотеки управления динамической памятью |
-heap2=0 | Установлен / Не установлен | По умолчанию, эта куча не используется |
-heap3=0 | Установлен / Не установлен | По умолчанию, эта куча не используется |
-stack=0x1000 | Установлен | Начальный размер стека равен 4K |
start=start | Установлен | По умолчанию точкой входа считается метка start с глобальным типом связывания. |
-asm | Не установлен | Включена поддержка начальной инициализации глобальных переменных в Си++ |
-l"" | Установлен | При нахождении неопределенных глобальных символов в рабочем каталоге осуществляется поиск библиотек, в которых данные символы могли бы быть определены. |
-addr=0x00000000 | Установлен | В отсутствие файла конфигурации создается один загружаемый сегмент с адресом загрузки 0x00000000 |
|
|
История развития хранилищ для нефти: Первые склады нефти появились в XVII веке. Они представляли собой землянные ямы-амбара глубиной 4…5 м...
Организация стока поверхностных вод: Наибольшее количество влаги на земном шаре испаряется с поверхности морей и океанов (88‰)...
Кормораздатчик мобильный электрифицированный: схема и процесс работы устройства...
Биохимия спиртового брожения: Основу технологии получения пива составляет спиртовое брожение, - при котором сахар превращается...
© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!