Относительные сегменты и сегменты стека имеют размер, равный сумме всех объявленных размеров этих сегментов.
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
| НА ГЛАВНУЮ | | ЧТО ТАКОЕ PIC ? | | ПРОГРАММАТОР | | ПРОЕКТЫ | | СТАТЬИ | | ССЫЛКИ | | КАРТА САЙТА |