"DVDXpert" - компас в мире Hi-Fi и High End техники и другой stereo и home cinema аппаратуры.

ГЕНЕРАЦИЯ ОБЪЕКТНЫХ МОДУЛЕЙ (ФАЙЛОВ)

31-08-2019

НЕКОТОРЫЕ ПРЕДУПРЕЖДЕНИЯ ПО ПОВОДУ ПРИМЕНЕНИЯ СКРИПТОВ

Компания Microchip® приводит следующие предупреждения, связанные с применением скриптов компоновщика:

Вполне возможно, что перед использованием вам понадобится модифицировать файлы скриптов, поставляемые в комплекте с MPLINK.

Вам понадобится устанавливать размер стека, если вы используете MPLABC17/C18 с MPLINK.

Вам понадобится разделять страницы памяти, если ваш код содержит инструкции GOTO или CALL без применения псевдоинструкции PAGESEL.

В MPASM вы не можете переключать впредназад секции в одиночном файле, т.е. вы не должны делать нечто наподобие этого'

CODE MY_ROM

(инструкции программы)

UDATA MY_VARS (переменные)

CODE MY_ROM

(вновь инструкции программы)

КАК РАБОТАЕТ КОМПОНОВЩИК

В предыдущих разделах этой главы мы в общих чертах описали, какие задачи выполняет компоновщик. Вполне возможно, что многим разработчикам этой информации будет достаточно. Для более глубокого знакомства с компоновщиком MPLINK надо знать не только что он делает, но и как он это делает.

Итак, как мы уже знаем, компоновщик комбинирует входные объектные модули в один выходной исполняемый модуль. Входные объектные модули могут содержать перемещаемые или абсолютные секции кода или данных, которые компоновщик разместит в памяти. Архитектура памяти описана в скрипте компоновщика. Скрипт предоставляет гибкий механизм для спецификации блоков памяти. Если компоновщик не может найти блок памяти, в котором должна располагаться специфицированная секция, то генерируется ошибка.

Как только компоновщик успешно распределил все секции из всех входных модулей в доступной памяти, начинается процесс перераспределения свойств указателей или символов. Остановимся подробнее на обобщенном понятии символа.

Использование символов является механизмом для описания и идентификации различных частей программы. Этими частями являются имена функций, имена переменных, имена секций, имена файлов и т.д. В зависимости от контекста, когда мы говорим о символах, мы можем иметь в виду имена переменных, имена меток, другие понятия. Соответственно, если мы говорим о пе

ременной, то имени переменной (ее символу) поставлен в соответствие адрес ОЗУ или смещение от начального адреса. Если мы говорим о подпрограмме, то ее имени (символу) поставлен в соответствие абсолютный или относительный адрес в памяти программ. Эти адреса являются значениями названных символов.

Указателисимволы, определенные в каждой входной секции, имеют условные значения адреса, отсчитываемые относительно начала секции. Впоследствии компоновщик придает этим адресам конкретные значения в соответствии с текущими адресами секций. После того, как компоновщик перераспределил значения символов в каждой входной секции, он рассчитывает значения внешних символов. Компоновщик пытается установить соответствие между всеми символьными ссылками и символьными значениями. Если для некоторых символьных ссылок не удается подобрать соответствующее внешнее определение, делается попытка найти эти определения в подключенных библиотечных файлах. Если и там нужные определения не найдены, генерируется сообщение об ошибке.


Смотрите также:
 Недостатки аналогового телевидения
 Экспресс.
 Эфирное цифровое телевидение: DVB-T
 «Рекьявик» - новая фишка Яндекс
 ЭЛЕКТРОННЫЕ ЧАСЫТЕРМОМЕТР НА PIC16F84

Добавить комментарий:
Введите ваше имя:

Комментарий:

Защита от спама - решите пример: