Биохимия спиртового брожения: Основу технологии получения пива составляет спиртовое брожение, - при котором сахар превращается...
Индивидуальные и групповые автопоилки: для животных. Схемы и конструкции...
Топ:
Определение места расположения распределительного центра: Фирма реализует продукцию на рынках сбыта и имеет постоянных поставщиков в разных регионах. Увеличение объема продаж...
Эволюция кровеносной системы позвоночных животных: Биологическая эволюция – необратимый процесс исторического развития живой природы...
Оценка эффективности инструментов коммуникационной политики: Внешние коммуникации - обмен информацией между организацией и её внешней средой...
Интересное:
Берегоукрепление оползневых склонов: На прибрежных склонах основной причиной развития оползневых процессов является подмыв водами рек естественных склонов...
Аура как энергетическое поле: многослойную ауру человека можно представить себе подобным...
Отражение на счетах бухгалтерского учета процесса приобретения: Процесс заготовления представляет систему экономических событий, включающих приобретение организацией у поставщиков сырья...
Дисциплины:
2022-10-05 | 24 |
5.00
из
|
Заказать работу |
|
|
При записи в файл конфигурации имен секций данных следует иметь в виду следующее обстоятельство: для каждой секции инициализированных данных (определенной в ассемблере вводным словом 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 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!