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

 
 
> EW430 v4.10A, Position independent code
msalov
сообщение Nov 12 2007, 09:53
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 526
Регистрация: 24-08-07
Из: Беларусь, Минск
Пользователь №: 30 045



Столкнулся с такой синуацией.
Установка галочки "Position independent code", приводит к тому, что программа страдает от переполнения стэка в 100% случаев. Без этой опции всё работает замечательно.
Может какие особые требования предьявляются к программе? Помошите понять причину.

С уважением.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
rezident
сообщение Nov 12 2007, 10:49
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



А вы проверьте по ассемблерному листингу задается ли в этом случае значение указателю стека вообще и treshhold для указателя в частности?
Go to the top of the page
 
+Quote Post
msalov
сообщение Nov 12 2007, 12:09
Сообщение #3


Знающий
****

Группа: Свой
Сообщений: 526
Регистрация: 24-08-07
Из: Беларусь, Минск
Пользователь №: 30 045



Цитата(rezident @ Nov 12 2007, 12:49) *
А вы проверьте по ассемблерному листингу задается ли в этом случае значение указателю стека вообще и treshhold для указателя в частности?

Код
__program_start:
004052   4031 3900         mov.w   #0x3900,SP

Имеется такая строка при обоих вариантах настройки. Выполнение программы начинается с адреса 0х4052 (то есть с этой строки).
А вот где посмотреть treshhold увы я не в курсе. Просвятите пожалуйста.

P.S. прибор MSP430F1611, программа линкуется с Normal DLIB

Сообщение отредактировал gotty - Nov 12 2007, 12:11
Go to the top of the page
 
+Quote Post
rezident
сообщение Nov 12 2007, 12:32
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Цитата(gotty @ Nov 12 2007, 17:09) *
А вот где посмотреть treshhold увы я не в курсе. Просвятите пожалуйста.

Я не священик, чтобы свЯтить wink.gif Могу лишь просвЕтить, что treshold для стека задается в опциях проекта Project->Options->General Options->Stack/Heap. Кстати, в EW430_CompilerReference.pdf указано, что при выборе Position independent code может создаваться значительный оверхед. Может поэтому у вас на размер стека ругается?
Go to the top of the page
 
+Quote Post
msalov
сообщение Nov 12 2007, 14:03
Сообщение #5


Знающий
****

Группа: Свой
Сообщений: 526
Регистрация: 24-08-07
Из: Беларусь, Минск
Пользователь №: 30 045



Цитата(rezident @ Nov 12 2007, 14:32) *
Я не священик, чтобы свЯтить wink.gif Могу лишь просвЕтить, что treshold для стека задается в опциях проекта Project->Options->General Options->Stack/Heap. Кстати, в EW430_CompilerReference.pdf указано, что при выборе Position independent code может создаваться значительный оверхед. Может поэтому у вас на размер стека ругается?


Настройки стека оставлены по умолчанию (галочки "Override default" снята). Компилятор/линковщик на размер стека не ругается. При выполнении программы SP выходит за "допустимые" границы и после очередного возвращения из функции, программа "улетает" в неизвестном направлении и оттуда не возвращяется.

rezident, спасибо за помощь.
Go to the top of the page
 
+Quote Post



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

 


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


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