29.4.2. Создание библиотек
При желании, пользователь может создавать свои собственные библиотеки, или расширять (дополнять) существующие, используя модули на C/C++ или модули ассемблера. Для того, чтобы задать для модуля C/C++ атрибут LIBRARY вместо заданного по умолчанию атрибута PROGRAM, используется
опция компилятора -library_module (или -Ь для некоторых программных продуктов IAR). В ассемблерных программах для задания модулю атрибута LIBRARY используется директива MODULE, а для задания атрибута PROGRAM — директива NAME. Убедиться в этом можно, открыв в окне редактора файлы Main.s79 и Maxm.in.s79 из рассматривавшихся в предыдущей главе проектов project5 и tutorjibraty, соответственно.
Создавать библиотеки или изменять атрибуты любого модуля можно также с помощью набора библиотек IAR XLIB.
29.5. Сегменты
После того, как компоновщик IAR XLINK завершает идентификацию модулей, подлежащих загрузке для данной программы, следующая выполняемая им задача заключается в назначении адресов для сегментов кода и данных, которые используются программой.
При написании программы на ассемблере, объявление и перечисление перемещаемых сегментов и задание способов их использования возлагается на программиста. В программах на C/C++ эти функции выполняет компилятор, создавая и используя набор предопределенных сегментов кода и данных, а программист только задает пределы объявления и перечисления этих сегментов.
Каждый модуль, изначально, содержит части каждого из возможных сегментов. Каждая такая часть сегмента может содержать байты кода или данных, а также резервировать пространство в оперативной памяти. Управление адресами, отводимыми под различные сегменты, в компоновщике XLINK осуществляется с помощью задания вариантов командной строки (-Z, -Р, -Ь). После завершения компоновки модуля, XLINK удаляет из него те части сегментов, которые не были использованы.
29.5.1. Управление сегментами
Управление сегментами осуществляется с помощью, так называемых, командных файлов компоновщика. Эти файлы включают в себя команды управления сегментами, использующие опции компоновщика, предназначенные для управления сегментами.
Для управления сегментами, компоновщик IAR XLINK предоставляет при создании командных файлов следующие опции:
-Ksegs = inc, count Дубликатный код -Ppack_def Определение упакованных сегментов
-Zseg_def Определение сегментов
-bbank^def Определение банкированных сегментов
-Mrange_def Отображение логических адресов на физические
адреса
Размещение сегментов с использованием опций -Z и -Р может быть выполнено одновременно одной командой, с учетом предыдущих команд размещения. Каждая команда размещения оперирует только той частью диапазона сегментов, которая не используется предыдущими командами размещения. Области памяти могут быть использованы для размещения сегментов, в
| НА ГЛАВНУЮ | | ЧТО ТАКОЕ PIC ? | | ПРОГРАММАТОР | | ПРОЕКТЫ | | СТАТЬИ | | ССЫЛКИ | | КАРТА САЙТА |