RE:MMX help

Тема в разделе "WASM.WIN32", создана пользователем 9ine, 6 ноя 2004.

  1. 9ine

    9ine New Member

    Публикаций:
    0
    Регистрация:
    15 июл 2004
    Сообщения:
    24
    Адрес:
    Russia
    как преобразовать с помощью инструкций 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
     
  2. Loger

    Loger New Member

    Публикаций:
    0
    Регистрация:
    28 авг 2003
    Сообщения:
    71
    Адрес:
    Minsk
    А чётных и нечётных чисел в word (dword, qword) поровну?
     
  3. Black_mirror

    Black_mirror Active Member

    Публикаций:
    0
    Регистрация:
    14 окт 2002
    Сообщения:
    1.035
    Код (Text):
    1. movq mm7,qword [mask_00FF00FF00FF00FF];маску вообще перед циклом нужно загрузить
    2.  
    3. movq mm0,[esi]
    4. movq mm2,mm7
    5. movq mm1,[esi+8]
    6. movq mm3,mm7
    7. pand mm2,mm0
    8. pand mm3,mm1
    9. psrlw mm0,8
    10. packuswb mm2,mm3;в mm2 чётные байты
    11. psrlw mm1,8
    12. packuswb mm0,mm1;в mm0 нечётные байты
    13.  
    14. mask_00FF00FF00FF00FF dw 255,255,255,255




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

    9ine New Member

    Публикаций:
    0
    Регистрация:
    15 июл 2004
    Сообщения:
    24
    Адрес:
    Russia
    thanks