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

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

Да что вы так на С ополчились я потом в листинге смотрел все там очень даже красиво получается вот для примера(+).

Отправлено F8 30 апреля 2008 г. 11:28
В ответ на: Небось еще и на С написано. Тогда скорее всего ничего лучше не придумаете. отправлено SM 30 апреля 2008 г. 11:05

на С

#pragma optimize=5
__arm S32 EchoCanceller::CalcFilter(S16 *pData)
{


S32 y=0;
S32 *pA = &A[0];

S32 x = (*pData--);

U32 i = FilterLength;


S32 te = OldE;
do{

S32 x1 = (*pData--);
S32 a = *pA;
a+=(te*x1)>>1;
*pA++ = a;
S32 tmp = (a>>13) * x;
y+=tmp;
x = x1;

}while(--i);

y >>= 14;
return y;
}

На asm


??CalcFilter:
PUSH {R4-R7}
// 105
// 106
// 107 S32 y=0;
MOV R1,#+0
// 108 S32 *pA = &A[0];
LDR R12,??CalcFilter_1 ;; ??Index
LDR R2,[R12, #+4]
// 109
// 110 S32 x = (*pData--);
LDRSH R3,[R0], #-2
// 111
// 112
// 113
// 114
// 116
// 117
// 118 U32 i = FilterLength;
??CalcFilter_4:
LDR R4,[R12, #+12]

// 120
// 121 S32 te = OldE;
??CalcFilter_5:
LDR R5,[R12, #+28]
// 122 do{
// 123
// 124 S32 x1 = (*pData--);
??CalcFilter_7:
LDRSH R12,[R0], #-2
// 125 S32 a = *pA;
// 126 a+=(te*x1)>>1;
LDR R6,[R2, #+0]
MUL R7,R12,R5
ADD R6,R6,R7, ASR #+1
// 127 *pA++ = a;
STR R6,[R2], #+4
// 128 S32 tmp = (a>>13) * x;
// 129 y+=tmp;
ASR R6,R6,#+13
MLA R1,R3,R6,R1
// 130 x = x1;
MOV R3,R12
// 131
// 132 }while(--i);
SUBS R4,R4,#+1
BNE ??CalcFilter_7
// 133
// 134 y >>= 14;
// 135 return y;
ASR R0,R1,#+14
??CalcFilter_6:
POP {R4-R7}
BX LR ;; return





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

Ответы


Отправка ответа
Имя*: 
Пароль: 
E-mail: 
Тема*:

Сообщение:

Ссылка на URL: 
URL изображения: 

если вы незарегистрированный на форуме пользователь, то
для успешного добавления сообщения заполните поле, как указано ниже:
введите число 69:

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

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