Телесистемы
 Разработка, производство и продажа радиоэлектронной аппаратуры
На главную   | Карта сайта | Пишите нам | В избранное
Требуется программист в Зеленограде
- обработка данных с датчиков; ColdFire; 40 тыс.
e-mail:jobsmp@pochta.ru

Телесистемы | Электроника | Конференция «Микроконтроллеры и их применение»

IAR ARM 4.30 оптимизация.... :/

Отправлено F8 20 декабря 2006 г. 19:55



Такая вот функция не работает при уровне оптимизации выше 6.
__ramfunc __arm S32 TDTMFDecoder::CalcFilter(S32 a1)
{

S32 D0 = 0;
S32 D1 = 0;
S32 D2 = 0;

S16 *pData = &pDataBuffer[DataBufferIndex & 0xFF];

for(U32 i = 0; i < GOERTZEL_POINT; i++)
{
S32 data = *pData++;

D0 = (a1 * D1)>>M;
D0 +=data;
D0 -= D2;

D2 = D1;
D1 = D0;
}

return(D1 * D1 + D2 * D2 - (((D2 * D1>>8) * a1)>>(M-8)));
}
но если заменить S32 data = *pData++; на S32 data = pData[i]; то все работает при любом уровне оптимизации.



Составить ответ | Вернуться на конференцию

Ответы



Перейти к списку ответов | Конференция | Раздел "Электроника" | Главная страница | Карта сайта

Rambler's Top100 Рейтинг@Mail.ru
 
Web telesys.ru