Предыдущая Следующая

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 и -Р может быть выполнено одновременно одной командой, с учетом предыдущих команд размещения. Каждая команда размещения оперирует только той частью диапазона сегментов, которая не используется предыдущими командами размещения. Области памяти могут быть использованы для размещения сегментов, в


Предыдущая Следующая






Warning: include(./news.php) [function.include]: failed to open stream: No such file or directory in /var/www/picprof/data/www/picprof.com/book/book4_271.html on line 126

Warning: include(./news.php) [function.include]: failed to open stream: No such file or directory in /var/www/picprof/data/www/picprof.com/book/book4_271.html on line 126

Warning: include() [function.include]: Failed opening './news.php' for inclusion (include_path='.:/usr/share/pear:/usr/share/php') in /var/www/picprof/data/www/picprof.com/book/book4_271.html on line 126