Особенности в названиях секций данных — КиберПедия 

Биохимия спиртового брожения: Основу технологии получения пива составляет спиртовое брожение, - при котором сахар превращается...

Индивидуальные и групповые автопоилки: для животных. Схемы и конструкции...

Особенности в названиях секций данных

2022-10-05 24
Особенности в названиях секций данных 0.00 из 5.00 0 оценок
Заказать работу

При записи в файл конфигурации имен секций данных следует иметь в виду следующее обстоятельство: для каждой секции инициализированных данных (определенной в ассемблере вводным словом data) кросс-ассемблер создает парную секцию неинициализированных данных, в которую переносятся все неинициализированные данные, объявленные в секции инициализированных данных (более подробную информацию см. в документе: ЮФКВ.30047-01 96 01. Описание языка ассемблера. Справочное руководство.).

Если секция неинициализированных данных возникла, как пара соответствующей инициализированной секции, то ее имя формируется путем добавления в начало имени парной секции приставки "bss.". То есть, если имя секции было "dataVector", то имя парной секции неинициализированных данных: "bss.dataVector". Этот факт необходимо учитывать при формировании файла конфигурации.

Одна из такой пары секций может оказаться пустой, и даже если они обе упоминаются в файле конфигурации, пользователь, управляя редактором связей, решает, что делать с пустой секцией, оставлять ее в выходном файле или удалять, используя ключ -d[n] (см. п. 4.8.1, 4.8.2, 4.8.3).

Пример работы с редактором связей

Данный пример показывает процесс сборки объектных файлов demo.elf, matrix.elf и нескольких используемых ими библиотек, в единую программу - абсолютный исполняемый файл. Точка входа start определена в файле startup.elf.

Предположим, что конфигурация физической памяти процессора такова:

Глобальная память:

· Банк 0 с адреса 0х80000000 по адрес 0х8003FFFF

· Банк 1 с адреса 0x80040000 по адрес 0x8007FFFF

Локальная память

· Банк 0 с адреса 0х00000000 по адрес 0х0003FFFF

· Банк 0 с адреса 0х00040000 по адрес 0х0007FFFF

 

Выходные секции образуются из следующих входных секций:

· пары секций MatrixArray и bss.MatrixArray из matrix.elf должны располагаться в локальной памяти, а секции Matrix1Array и bss.Matrix1Array в глобальной,

· исполняемый код, содержащийся в секциях.text файлов demo.elf и matrix.elf, собирается в одну выходную секцию, которую необходимо расположить (в силу внутренних причин задачи) в локальной памяти по адресу 0х00000200,

· из секции.text вызывается функция UDIV32, осуществляющая беззнаковое деление 32-х разрядных чисел. Тело функции хранится в библиотечном модуле div.elf, который в составе библиотеки времени выполнения libc.lib расположен в каталоге d:\neuro\lib,

· из секции.text вызывается функция MulVects, осуществляющая скалярное умножение матриц. Тело функции хранится в библиотеке векторно-матричных вычислений matvect.lib, расположенной в текущем каталоге,

· программа использует работу с динамически выделенными массивами. Для этого подключаются функции библиотеки времени выполнения libc.lib, расположенные в библиотечных модулях malloc.elf, calloc.elf и free.elf.

 

Файл конфигурации для редактора связей demo.cfg выглядит так:

MEMORY /* физическая память нейропроцессора */

{

LOCAL0 at 0x00000000, len = 0x40000, page = 0x4000;

LOCAL1 at 0x00040000, len = 0x40000;

GLOBAL0 at 0x80000000, len = 0x40000;

GLOBAL1 at 0x80040000, len = 0x40000;

}

SEGMENTS

{

GlobalSeg in GLOBAL0;

LocalSeg in LOCAL0;

}

SECTIONS

{

text at 0x00000200;

MatrixArray in LocalSeg;

bss.MatrixArray in LocalSeg, align page;

Matrix1Array in GlobalSeg;

bss.Matrix1Array in GlobalSeg, align page;

stack in LocalSeg, align page;

heap in LocalSeg, align page;

heap1 in GlobalSeg, align page;

}

Командный файл demo.cmd хранит все ключи запуска редактора связей, имена входных объектных файлов, файла конфигурации:

-a -oOUTFILE.ABS -cdemo.cmd -ld:\system\libs -mdemo.map

-stack=4096

-heap=65536

-heap1=65536

demo.elf

matrix.elf

 

Командная строка запуска редактора связей выглядит так:

linker.exe @file.cmd

Информацию о расположении программы в памяти процессора можно получить, просматривая содержимое файла карты памяти demo.map:

*************************************************************************

Редактор связей для NeuroMatrixÒ NM640х * v1.xx * (c)1996-2011* НТЦ Модуль

*************************************************************************

ИМЯ Абсолютного исполняемого файла: demo.abs

точка входа: "start" по адресу 0х00000274

=========================================================================

Доступные физические диапазоны адресов:

LOCAL0 at 0x00000000, len = 0x40000, page = 0x400;

LOCAL1 at 0x00040000, len = 0x40000;

GLOBAL0 at 0x80000000, len = 0x40000;

GLOBAL1 at 0x80040000, len = 0x40000;

=========================================================================

Расположение сегментов и составляющих их секций:

сегмент: text, адрес 0х00000200, размер 0х424

-------------------------------------------------------------------------

выходная секция адрес   размер   флаги/входные секции

--------------- ------------ ------------ -----------------------------

.text        0x00000200 0х00000424 

             0x00000200 0x00000058 demo.elf (.text)

             0x00000258 0x0000001B matrix.elf(.text)

             0x00000274 0x00000010 startup.elf(.text), libc.lib

             0x00000284 0x0000003F malloc.elf(.text), libc.lib

             0x000002C4 0x00000053 calloc.elf(.text), lib.lib

             0x00000318 0x0000002D free.elf(.text), libc.lib

             0x00000346 0x00000063 div.elf(.text), libc.lib

             0x000003AA 0x0000007A matrix.elf(.text),matvect.lib

 

сегмент: LocalSeg, адрес 0х00000400, размер 0х12400

-------------------------------------------------------------------------

выходная секция адрес   размер   флаги/входные секции

--------------- ------------ ------------ ----------------------------

MatrixArray 0x00000400 0x00000800

             0x00000400 0x00000800 matrix.elf(MatrixArray)

.init       0x00000CB0 0x00000008 НЕИНИЦИАЛИЗИРОВАНА

             0x00000CB0 0x00000008 startup.elf(init), libc.lib

.fini       0x00000CB8 0x00000008 НЕИНИЦИАЛИЗИРОВАНА

             0x00000CB8 0x00000008 startup.elf(init), libc.lib

bss.MatrixArray 0x00001000 0x000000A0 НЕИНИЦИАЛИЗИРОВАНА

             0x00001000 0x000000A0 matrix.elf(bss.MatrixArray)

stack       0x00001400 0x00001000 НЕИНИЦИАЛИЗИРОВАНА

             0x00001400 0x00001000 startup.elf(stack), libc.lib

heap        0x00002400 0x00010000 НЕИНИЦИАЛИЗИРОВАНА

             0x00002400 0x00010000 memory.elf(heap), libc.lib

 

сегмент: GlobalSeg, адрес 0х80000000, размер 0х10C00

-------------------------------------------------------------------------

выходная секция адрес   размер   флаги/входные секции

--------------- ------------ ------------ ----------------------------

Matrix1Array 0x80000000 0x00000800

             0x80000000 0x00000800 matrix.elf(Matrix1Array)

bss.Matrix1Array 0x80000800 0x800000A0 НЕИНИЦИАЛИЗИРОВАНА

             0x00000800 0x000000A0 matrix.elf(bss.Matrix1Array)

heap1       0x00000C00 0x00010000 НЕИНИЦИАЛИЗИРОВАНА

             0x00000C00 0x00010000 memory.elf(heap), libc.lib

=====================================================================

ГЛОБАЛЬНЫЕ СИМВОЛЫ:

имя символа                адрес символа

-----------                -------------

start                      0x00000274

__main                     0x00000200

Matrix                     0x00000400

Matrix1                    0x80000000

UDIV32                     0x00000346

MulVects                   0x00000258

__MatrixConv               0x000003AA

__calloc                   0x000002C4

__malloc                   0x00000284

__free                     0x00000318

 

ВСЕГО: 10 символов

------------------


Поделиться с друзьями:

Механическое удерживание земляных масс: Механическое удерживание земляных масс на склоне обеспечивают контрфорсными сооружениями различных конструкций...

Архитектура электронного правительства: Единая архитектура – это методологический подход при создании системы управления государства, который строится...

Автоматическое растормаживание колес: Тормозные устройства колес предназначены для уменьше­ния длины пробега и улучшения маневрирования ВС при...

Опора деревянной одностоечной и способы укрепление угловых опор: Опоры ВЛ - конструкции, предназначен­ные для поддерживания проводов на необходимой высоте над землей, водой...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.013 с.