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

 
 
2 страниц V  < 1 2  
Reply to this topicStart new topic
> Lpc2000+RTOS+sprintf (Не работает sprintf), Как может операционка повлиять на sprintf ?
AlexandrY
сообщение Feb 6 2007, 15:29
Сообщение #16


Ally
******

Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050



Компилер с самого начала придерживается выравнивания стека по границе 8.
Я когда пишу ассемблерные модули под RTOS, то тоже всегда ставлю директиву PRESERVE8
Поэтому в течении выполнения программы выравнивание на 8-мь всегда сохраняется.
А вот начинается оно с того как будет размещен стек задачи.
Ясно, что и сохранять в контексте RTOS надо тоже четное число 32-х битных регистров.
Просто где-то в функции __printf есть явное отсекание 3-х младших бит адреса переменной типа float.
Сейчас это место не вспомню, но отладчик легко покажет.


Цитата(zltigo @ Feb 6 2007, 15:10) *
Цитата(AlexandrY @ Feb 6 2007, 12:23) *

Хе..Хе, это грабли библиотеки RealView.
Помогает только опция: --min_array_alignment=8

Обалдеть sad.gif Ничего не понимаю - ну ладно, выделили мы стек выровненный на 8. Ну и что? Это никак не гарантирует, что при вызове printf() указатель останется выровненным. Что-то здесь очень темное, если это так.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Feb 6 2007, 15:48
Сообщение #17


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(AlexandrY @ Feb 6 2007, 14:29) *
Ясно, что и сохранять в контексте RTOS надо тоже четное число 32-х битных регистров.

Бесспорно. Но кто запретит мне в задаче завести нечетное количество локальных переменных?
И что тогда , будет при вызове printf() если:
Цитата
Просто где-то в функции __printf есть явное отсекание 3-х младших бит адреса переменной типа float.

Видимо min_array_alignment еще какие-то побочные эффекты имеет sad.gif.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 1st September 2025 - 16:52
Рейтинг@Mail.ru


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