Пр о ц е с с о р TMS 3 2 0C4 x
156
•
Входные секции
Синтаксис
{
input sections
}
, где
input sections
- перечень входных сек-
ций, включаемых в выходную.
Следует отметить, что выходная секция может включать в себя несколько
входных, для чего указывается имя файла с требуемой секцией и имя секции в
этом файле.
Для работы компоновщика, как правило, создается специальный команд-
ный файл, содержащий ключи компоновщика, имена входных и выходных
файлов, директивы компоновщика.
Компоновщик, используя командный файл с описанием фактического
расположения памяти целевой системы, объединяет одноименные секции раз-
личных объектных файлов в одну секцию с тем же именем и располагает ее по
требуемому адресу, корректируя при этом все адресные ссылки на эту секцию.
Процесс компоновки двух объектных файлов
file_1.obj
и
file_2.obj
в выходной
file.out
показан на рис.Г.4, командный файл компоновщика – в примере.
Пример командного файла компоновщика file.cmd
-e START
file_1.obj
file_2.obj
-o file.out
-m file.map
MEMORY
{
LOCAL: origin = 00300000h, length = 20000h
RAM0: origin = 002FF800h, length = 400h
RAM1: origin = 002FFC00h, length = 400h
}
SECTIONS
{
.vectors: {} > RAM0
.text: {} > RAM0
.data: {} > RAM1
.bss: {} > LOCAL
}
Командный файл компоновщика директивой MEMORY описывает три
блока памяти целевой системы: блок внутренней памяти RAM0 (начальный ад-
рес 002FF800h размер 1024 слова), блок внутренней памяти RAM1 (начальный
адрес 002FFC00h размер 1024 слова) и блок внешней локальной памяти LOCAL
(начальный адрес 00300000h размер 128 Кслов). Директива SECTIONS застав-
ляет компоновщик расположить секции следующим образом:
•
секция
.vectors
файла file_2.obj располагается с адреса 002FF800h (RAM0);