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

Относительные сегменты и сегменты стека имеют размер, равный сумме всех объявленных размеров этих сегментов.

29.5.4. Типы сегментов памяти

Дополнительный параметр сегмента памяти type (тип) используется, чтобы задать тип для каждого из сегментов в списке. Этот параметр определяет, каким образом компоновщик XLINK будет обрабатывать перекрытия сегментов. Кроме того, указание типа сегментов памяти используется компоновщиком для генерации в определенных выходных форматах информации, используемой некоторыми аппаратными эмуляторами и отладчиком C-SPY.

Возможные типы сегментов памяти перечислены в Табл. 29.2. (В таблице не указаны типы сегментов, которые поддерживаются XLINK, но не могут использоваться в микроконтроллерах семейства LPC2000.)

Таблица 29.2. Типы сегментов памяти

Тип сегмента

Описание

BIT

Битовая (разрядная) память1'

CODE

Память кода

CONST

Память констант

DATA

Память данных

FAR

Данные в FAR-памяти. XLINK не будет помечать доступ в этот сегмент, а часть сегмента, находящаяся около 64-килобайтной границы, будет смещена вверх к началу границы

FARC, FARCONST

Константа в FAR-памяти. XLINK не будет помечать доступ в этот сегмент, а часть сегмента, находящаяся около 64-килобайтной границы, будет смещена вверх к началу границы

FARCODE

Код в FAR-памяти

HUGE

Данные в HUGE-памяти

HUGEC, HUGECONST

Константа в HUGE-памяти

HUGECODE

Код в HUGE-памяти

IDATA

Внутренняя память данных

NEAR

Данные в NEAR-памяти. При обращении к этому сегменту используется 16-битная адресация. Этот сегмент может быть расположен где-либо в 32-битном адресном пространстве

NEARC, NEARCONST

Константа в NEAR-памяти

UNTYPED

Заданный по умолчанию тип

XDATA

Внешняя память данных

ZPAGE

Память данных

11 Адрес сегмента BIT определен в битах, а не в байтах. Память BIT распределяется первой.

29.5.5. Ошибки перекрытия

По умолчанию XLINK проверяет, чтобы различные сегменты, заданные опциями размещения сегментов и объявленные определениями сегментов, не накладывались друг на друга в памяти. Если такое перекрытие сегментов будет иметь место, XLINK выдаст сообщение об ошибке 24: «Segment segmentl overlaps segment segment2».

29.5.6. Ошибки диапазона

Помимо ошибок перекрытия, при компоновке могут иметь место так называемые ошибки диапазона. Причина их возникновения в том, что некоторые команды процессора не работают, если после завершения компоновки не соблюдены определенные условия. Например, адрес перехода в программе должен лежать в пределах некоторого расстояния от команды перехода, а также должен быть четным. XLINK при компоновке проверяет выполнение всех необходимых условий и, если какое-либо из них не соблюдено, генерирует сообщение (или предупреждение) об ошибке диапазона, сопровождаемое описанием этой ошибки.

29.5.7. Примеры размещения сегментов

Определить местоположение сегмента кода SEGA начиная с адреса Oh, расположив непосредственно за ним сегмент кода SEGB: -Z(CODE) SEGA, SEGB=0


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






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_273.html on line 292

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_273.html on line 292

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_273.html on line 292