реклама на сайте
подробности

 
 
2 страниц V  < 1 2  
Reply to this topicStart new topic
> вопрос по секциям в GNU, как сделать секцию не загружаемой
Konkere
сообщение Nov 30 2010, 05:20
Сообщение #16


Участник
*

Группа: Участник
Сообщений: 17
Регистрация: 14-01-10
Из: Снежинск
Пользователь №: 54 791



Цитата(demiurg_spb @ Nov 29 2010, 16:00) *
Сергей Вам говорит не о "инициализации регистров процессора", а о инициализации "С, С++ контекста" - это совершенно разные понятия.


C++ контекст в моем случае не используется, С контекст - будем прописывать сами. Как я уже говорил, этот дополнительный код компилятора может вызвать необрабатываемое прерывание, поэтому он мне не нужен. Насколько я понял, он берется из файла "crt0.o". Как запретить компилятору или линкеру его использовать? К сожелению, вышеуказанный способ избавления от секций ("-R ._init -R .fini", например) у меня почему-то не работает.

P.S. Компилятор mips-kgp-elf, спасибо Klen-у

Сообщение отредактировал Konkere - Nov 30 2010, 05:22
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Nov 30 2010, 05:50
Сообщение #17


фанат дивана
******

Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684



Цитата(Konkere @ Nov 30 2010, 10:20) *
Насколько я понял, он берется из файла "crt0.o". Как запретить компилятору или линкеру его использовать?


Ключ линкера -nostartfiles.


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Nov 30 2010, 11:32
Сообщение #18


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



QUOTE (Konkere @ Nov 30 2010, 07:20) *
С контекст - будем прописывать сами. Как я уже говорил, этот дополнительный код компилятора может вызвать необрабатываемое прерывание, поэтому он мне не нужен.
В таких случаях обычно пишется функция с названием типа low_level_init() и вызывается из стартапа до инициализации. Она настраивает нужуную вам периферию, после чего возвращает управление в стартап. И уже он родным для компилятора образом подготавливает контекст и вызывает main(). Если в crt0.o не предусмотрен вызов подобной функции - никто не заставляет линковать crt0.o. Достаточно добавить его исходник в проект и в него вписать вызов нужной функции. Прописывать контекст самостоятельно - неэстетично smile.gif


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post

2 страниц V  < 1 2
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 25th July 2025 - 16:34
Рейтинг@Mail.ru


Страница сгенерированна за 0.01357 секунд с 7
ELECTRONIX ©2004-2016