LINUX.ORG.RU

Реализация FFT на асм от Intel не работает.


0

1

Есть вот такая реализация FFT от Intel, не получается ее реализовать.
При выполнении слетает с ошибкой сегментации не пройдя и половину кода.

Делаю вот так:

Собственно прототип:

void _radix2_cfft(int* in, int* csNorm, int* csInv, int* index, int* out, int L);

Ассемблерный код:
    push L
    push out
    push index
    push csInv
    push csNorm
    push in
    push out ; Просто мусор в вершину, вместо адреса возврата 

    mov eax, 4[esp] 
    mov edx, 8[esp] 
    __AIR_radix2_cfft:
    ........

Все входные данные имеют формат фиксированной запятой:
xyzzzzzzzzzzzzzz (итого 16 бит), где x - знак, y - до запятой, z-после запятой
Например: 0100101010101011

Каждым числом идут пара 16 битных чисел действительная часть и мнимая часть

Наврятли Intel выложил кривой код, скорее всего я что-то делаю не так.
Буду благодарен за любую вашу помощь и догадки почему не работает.
Спасибо.

Данные надо выравнивать, до 16-ти байт для sse, для mmx не помню, но 16 подойдёт. man 3 posix_memalign

nikitos ★★ ()

Наврятли Intel выложил кривой код

Да ладно, кривые процессоры же выкладывали.

buddhist ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.