|
|
  |
WinAVR, Вопрос по оптимизации |
|
|
|
Jul 3 2008, 06:38
|
Знающий
   
Группа: Участник
Сообщений: 596
Регистрация: 26-05-06
Из: Москва
Пользователь №: 17 484

|
Цитата(BigBolt @ Jul 3 2008, 10:32)  Можно ли как то указать компилятору что данный участок кода не нужно оптимизировать? Нет. Анатолий.
|
|
|
|
|
Jul 3 2008, 07:01
|
Знающий
   
Группа: Участник
Сообщений: 596
Регистрация: 26-05-06
Из: Москва
Пользователь №: 17 484

|
Цитата(BigBolt @ Jul 3 2008, 10:58)  Жаль. Придётся на асме отдельный кусок лепить... А может вначале расказать в чем проблемма, может Вам подскажут более простое решение? Анатолий.
|
|
|
|
|
Jul 3 2008, 07:31
|
Местный
  
Группа: Свой
Сообщений: 408
Регистрация: 21-10-06
Из: Санкт-Петербург
Пользователь №: 21 527

|
Цитата(BigBolt @ Jul 3 2008, 10:32)  Можно ли как то указать компилятору что данный участок кода не нужно оптимизировать? Выделить этот участок в отдельный файл. Ну и далее - O0...
|
|
|
|
|
Jul 3 2008, 08:41
|
Местный
  
Группа: Участник
Сообщений: 424
Регистрация: 6-03-06
Из: Н.Новгород
Пользователь №: 14 997

|
Цитата(aesok @ Jul 3 2008, 11:01)  А может вначале расказать в чем проблемма, может Вам подскажут более простое решение? Анатолий. При оптимизации -0s функция компилится не так как бы этого хотелось. Переменная которая изменяется в прерывании в данной функции не обновляется даже с использованием volatile. Если компилить при опции -О0 то всё нормально...
|
|
|
|
|
Jul 3 2008, 09:04
|
Местный
  
Группа: Участник
Сообщений: 424
Регистрация: 6-03-06
Из: Н.Новгород
Пользователь №: 14 997

|
Цитата(Сергей Борщ @ Jul 3 2008, 12:49)  Раз код настолько секретный, что даже кусочек его показать нельзя, рискну телепатировать, что переменная - указатель. И объявлена как-то вроде volatile char * Variable. Угадал? Да нет не секретный, уже всё переделал. Структура, доступ к которой происходит через указатель. В цикле проверки обращениее к ней происходит один раз, при входе в цикл ожидания. А потом проверяется одно и тоже значение. Естественно сообщение о том что произошло некое событие не фиксируется.
|
|
|
|
|
Jul 17 2008, 15:50
|

Группа: Участник
Сообщений: 13
Регистрация: 20-10-07
Пользователь №: 31 533

|
Цитата(Сергей Борщ @ Jul 3 2008, 14:07)  Ну так покажите. На словах тяжело воспринимается. У вас скорее всего как volatile был объявлен сам указатель, а не то, на что он указывет. Или наоборот. Отсюда и проблемы. может покажите как правильно объявлять указатель на volatile, а как указатель с квалификатором volatile. Недавно столкнулся с этим вопросом, ничего толкового не нашел ((
|
|
|
|
|
Jul 17 2008, 16:10
|
Знающий
   
Группа: Участник
Сообщений: 596
Регистрация: 26-05-06
Из: Москва
Пользователь №: 17 484

|
Цитата(r301 @ Jul 17 2008, 19:50)  может покажите как правильно объявлять указатель на volatile, а как указатель с квалификатором volatile. Недавно столкнулся с этим вопросом, ничего толкового не нашел ((  Для volatile аналогично. Цитата Код const Pointers
The keyword const for pointers can appear before the type, after the type, or in both places. The following are legal declarations:
const int * ptr1; /* A pointer to a constant integer: the value pointed to cannot be changed */ int * const ptr2; /* A constant pointer to integer: the integer can be changed, but ptr2 cannot point to anything else */ const int * const ptr3; /* A constant pointer to a constant integer: neither the value pointed to nor the pointer itself can be changed */
Declaring an object to be const means that the this pointer is a pointer to a const object. A const this pointer can by used only with const member functions. Анатолий.
Сообщение отредактировал aesok - Jul 17 2008, 16:13
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|