Кормораздатчик мобильный электрифицированный: схема и процесс работы устройства...
Папиллярные узоры пальцев рук - маркер спортивных способностей: дерматоглифические признаки формируются на 3-5 месяце беременности, не изменяются в течение жизни...
Топ:
Отражение на счетах бухгалтерского учета процесса приобретения: Процесс заготовления представляет систему экономических событий, включающих приобретение организацией у поставщиков сырья...
Особенности труда и отдыха в условиях низких температур: К работам при низких температурах на открытом воздухе и в не отапливаемых помещениях допускаются лица не моложе 18 лет, прошедшие...
Определение места расположения распределительного центра: Фирма реализует продукцию на рынках сбыта и имеет постоянных поставщиков в разных регионах. Увеличение объема продаж...
Интересное:
Принципы управления денежными потоками: одним из методов контроля за состоянием денежной наличности является...
Инженерная защита территорий, зданий и сооружений от опасных геологических процессов: Изучение оползневых явлений, оценка устойчивости склонов и проектирование противооползневых сооружений — актуальнейшие задачи, стоящие перед отечественными...
Что нужно делать при лейкемии: Прежде всего, необходимо выяснить, не страдаете ли вы каким-либо душевным недугом...
Дисциплины:
|
из
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 при запуске программы, и по обработке возврата из программы. |
|
|
|
Эмиссия газов от очистных сооружений канализации: В последние годы внимание мирового сообщества сосредоточено на экологических проблемах...
Организация стока поверхностных вод: Наибольшее количество влаги на земном шаре испаряется с поверхности морей и океанов (88‰)...
История развития хранилищ для нефти: Первые склады нефти появились в XVII веке. Они представляли собой землянные ямы-амбара глубиной 4…5 м...
Архитектура электронного правительства: Единая архитектура – это методологический подход при создании системы управления государства, который строится...
© cyberpediasu.com 2017-2026 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!