· Начало · Отвђтить · Статистика · Поиск · FAQ · Правила · Установки · Язык · Выход · WASM.RU · Noir.Ru ·

 WASM Phorum —› WASM.WIN32 —› RE:MMX help

Посл.отвђт Сообщенiе


Дата: Ноя 6, 2004 09:08:06

как преобразовать с помощью инструкций MMX массив целых чисел размера BYTE mass[size] выбрав из него по порядку четные и нечетный числа?
BYTE mass[] = 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15
BYTE result[] =
{even, odd} = 0,2,4,6,8,10,12,14,1,3,5,7,9,11,13,15


Дата: Ноя 6, 2004 16:14:35

А чётных и нечётных чисел в word (dword, qword) поровну?


Дата: Ноя 6, 2004 19:27:36 · Поправил: Black_mirror

movq mm7,qword [mask_00FF00FF00FF00FF];маску вообще перед циклом нужно загрузить

movq mm0,[esi]
movq mm2,mm7
movq mm1,[esi+8]
movq mm3,mm7
pand mm2,mm0
pand mm3,mm1
psrlw mm0,8
packuswb mm2,mm3;в mm2 чётные байты
psrlw mm1,8
packuswb mm0,mm1;в mm0 нечётные байты

mask_00FF00FF00FF00FF dw 255,255,255,255


сдвиги на MMX параллельно с другими инструкциями вроде выполняться не могут, но код на оптимальность и завершенность совсем не претендует ;)


Дата: Ноя 8, 2004 17:14:15

thanks


Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.068