Типы сооружений для обработки осадков: Септиками называются сооружения, в которых одновременно происходят осветление сточной жидкости...
История создания датчика движения: Первый прибор для обнаружения движения был изобретен немецким физиком Генрихом Герцем...
Топ:
Основы обеспечения единства измерений: Обеспечение единства измерений - деятельность метрологических служб, направленная на достижение...
Эволюция кровеносной системы позвоночных животных: Биологическая эволюция – необратимый процесс исторического развития живой природы...
Теоретическая значимость работы: Описание теоретической значимости (ценности) результатов исследования должно присутствовать во введении...
Интересное:
Национальное богатство страны и его составляющие: для оценки элементов национального богатства используются...
Аура как энергетическое поле: многослойную ауру человека можно представить себе подобным...
Отражение на счетах бухгалтерского учета процесса приобретения: Процесс заготовления представляет систему экономических событий, включающих приобретение организацией у поставщиков сырья...
Дисциплины:
2022-10-05 | 26 |
5.00
из
|
Заказать работу |
|
|
Компилятор Си++ использует секции неинициализированных данных.heap (локальная куча) и.heap1 (глобальная куча) для создания динамической кучи времени выполнения, используемой функцией malloc(). При помощи ключей -heap и -heap1 можно определить размер кучи в глобальной и локальной памяти вычислительного устройства. Величина кучи задается после знака "равно", и измеряется в 32-разрядных словах:
linker -heap= 0x40000 -heap1= 0x100000,
под локальную кучу выделено 256K слов, а под глобальную 1Mb слов.
Между ключами -heap и -heap1, знаком "=" и размером кучи не должно быть пробелов.
По умолчанию размеры локальной и глобальной куч равны 1K слов. Если размер кучи не установлен пользователем, редактор связей выдает напоминание, что под кучу выделено всего 1K слов.
Редактор связей создает секции.heap и.heap1 только в том случае, если они имеются во входных файлах, в частности, в библиотеке работы с динамической памятью. Во всех других случаях данные ключи игнорируются.
Редактор связей создает также глобальные символы __HEAP_SIZE и __HEAP1_SIZE. Им присваиваются значения, равные размерам локальной и глобальной куч памяти времени выполнения.
О ключах – heap2 и – heap3
В связи с тем, что процессор может работать с четырьмя шинами и более, и соответственно, возможность работы с четырьмя областями памяти, возникает желание располагать данные более чем в двух областях. Для этого и была добавлена возможность создания еще двух куч. Размер их по умолчанию ноль, в остальном их свойства повторяют свойства первых двух куч. Размер их содержат переменные __HEAP2_SIZE и __HEAP3_SIZE. Для того, чтобы целенаправленно выделять память в нужной области можно использовать функции malloc0, malloc1, malloc2 и malloc3.
4.8.5 Определение размера стека (ключ -stack=[размер])
|
Для работы программ (на процессорах серии 1879ВМ), при осуществлении вызова функций, сохранения регистров и адресов возврата, используется стек. Стек представляет собой секцию неинициализированных данных с именем.stack, размер которой задается на этапе создания исполняемого файла, то есть во время редактирования связей. Размер стека задается при помощи параметра -stack=[размер] и измеряется в 32-разрядных словах.
Следующий пример демонстрирует процесс определения стека (секции.stack) размером 4K слов:
linker - stack= 0x1000
По умолчанию размер стека равен 1K слов.
Между ключом -stack, знаком "=" и размером стека не должно быть пробелов.
Если в файле конфигурации не указано обратное, секция.stack выделяется в памяти среди прочих секций. Однако для увеличения быстродействия рекомендуется данную секцию помещать в наиболее быструю из доступных память процессора. Механизм размещения секций по заранее определенным адресам приводится в описании файла конфигурации (см. 4.11.3 Секция SECTIONS).
4.8.6 Определение имени точки входа (ключ -start=<имя_метки>)
Адрес памяти, с которого программа начинает выполняться, называется точкой входа. Когда загрузчик помещает программу в память вычислительного устройства, счетчик команд должен быть инициализирован, в него необходимо записать адрес начала программы.
По умолчанию, когда в командной строке не задано имя точки входа, редактор связей полагает, что она имеет имя start. Если глобальный символ с данным именем в таблице символов не обнаружен, или обнаружен, но не определен, то пользователю выдается ошибка " точка входа start не определена ".
Ключ -start=<имя_метки> позволяет задать свое имя метки, с которой будет запущена программа. Метка обязательно должна быть определена в одной из секций, и иметь глобальный тип связывания. Редактор связей вычисляет ее адрес и сохраняет его, как адрес точки входа.
Следующий пример демонстрирует процесс определения пользовательской точки входа, которая в программе помечена меткой BEGIN:
|
linker file1.elf file2.elf -start= BEGIN
Между ключом -start, знаком "=" и именем метки не должно быть пробела.
Обычно точка входа с именем start определена в стартовом коде, который хранится в библиотеке времени выполнения. При подсоединении данной библиотеки в процессе редактирования связей стартовый код автоматически добавляется к пользовательской программе.
Примечание | Если использовать стандартную библиотеку, и при этом определить собственную точку входа, то стандартный стартовый код не будет использован, а при дополнительном задании ключа ‑d{1..4} можно и вовсе удалить его из исполняемого файла. Тогда пользователь берет на себя ответственность по правильной установке регистра стека ar7 при запуске программы, и по обработке возврата из программы. |
|
|
Археология об основании Рима: Новые раскопки проясняют и такой острый дискуссионный вопрос, как дата самого возникновения Рима...
Наброски и зарисовки растений, плодов, цветов: Освоить конструктивное построение структуры дерева через зарисовки отдельных деревьев, группы деревьев...
Индивидуальные очистные сооружения: К классу индивидуальных очистных сооружений относят сооружения, пропускная способность которых...
Папиллярные узоры пальцев рук - маркер спортивных способностей: дерматоглифические признаки формируются на 3-5 месяце беременности, не изменяются в течение жизни...
© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!