2 / 2 / 0
Регистрация: 08.10.2009
Сообщений: 9
1

Рекурсивный фильтр на асме

08.10.2009, 17:23. Показов 2094. Ответов 2
Метки нет (Все метки)

Добрый день!
Подскажите пожалуйста, как наиболее эффективно реализовать на интеловском ассемблере код, эквивалентный данному сишному:
C++
1
2
3
4
5
6
voif func(short pX[],short pY[],int nSize)
{
  short z=0;
  for (int i=0; i<nSize; i++)
    z -= (pY[i] = pX[i] + z)>>4;        
}
Это реализация рекурсивного ВЧ-фильтра 1 порядка. Размеры массивов большие - десятки тысяч элементов.

Вот мой вариант:
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
__asm
{
        movzx      edi,nSize
        mov         esi,pX
        mov       ecx,pY                    
        lea          edi,[esi+2*edi]            
        xor       eax,eax               // z
_loop:
        cmp          esi,edi 
        je             _end_loop
        movzx        edx,word ptr[esi]  
        add     edx,eax     
        mov     word ptr[ecx], dx   
        sar     edx,4           
        sub     eax,edx     
        add     ecx,2
        add     esi,2
        jmp     _loop
_end_loop:
}
Посоветуйте, реально ли его существенно улучшить, может быть можно использовать MMX или еще как-то.

Спасибо.
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.10.2009, 17:23
Ответы с готовыми решениями:

Рекурсивный цифровой фильтр
Здравствуйте! Подскажите, пожалуйста, для чего рекурсивному филтьру запоминать предидущие значения?...

Рекурсивный и не рекурсивный метод написания кода
Объясните пожалуйста, чем отличаются два таких метода. Желательно с примерами.

Морфинг на Асме
Нужно реализировать прогу для морфинга изображение, при которой одно изображение плавно переходит в...

ошибка в асме
не могу найти ошибку :(( вычисляет не правильно в коде асма... #include &quot;stdafx.h&quot; #include...

2
Эксперт С++
7175 / 3234 / 80
Регистрация: 17.06.2009
Сообщений: 14,164
08.10.2009, 19:28 2
А в каком месте тут рекурсия применяется ?
0
2 / 2 / 0
Регистрация: 08.10.2009
Сообщений: 9
09.10.2009, 09:34  [ТС] 3
Да нет, рекурсия в типичном программистском значении тут не при чем. Просто фильтр так называется, потому что при вычислении очередного значения фильтрованного сигнала использует ранее вычисленные его значения. Другое название - БИХ-фильтр, фильтр с бесконечной импульсной характеристикой. В отличие от КИХ-фильтра, который для вычисления очередного значения выхода использует только значения входа...
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.10.2009, 09:34
Помогаю со студенческими работами здесь

Вставка на асме
подскажите пожалуйста, как вот это правильно написать на асме: mov ah,data^ mov...

Логические операции на асме.
Дан массив из 5 байт. Рассматривая его как массив из 8 пятиразрядных слов, найти “исключающее или”...

Переписать на асме код Си. e^x
помогите с программой. Нужно зделать вставку на ассемблере в СИ код. Вставка должна выполнять...

Проект на асме в Eclipse
Коллеги, подкажите, как можно в Eclipse писать прошивку под AVR на голом асме? Отдельные функции я...

Пространство имён на асме
Подскажите новичку. Интересно, можно ли организовать ограничение области видимости для меток в...

Умножение дробных чисел в асме
Связался с этим делом, покурил апнот200. Но тока он чето не работает, считает и выдает какую-то...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru