Помощь с MMX

Тема в разделе "WASM.BEGINNERS", создана пользователем GeNeZiS, 24 янв 2009.

  1. GeNeZiS

    GeNeZiS New Member

    Публикаций:
    0
    Регистрация:
    14 сен 2006
    Сообщения:
    135
    Доброго времени суток!

    Пытаюсь начать разбираться с MMX кодом.
    Вопрос: приведите пожалуйста пример как эту будет выглядеть с помощью MMX команд
    Код (Text):
    1. mov     ecx, _size
    2.     lea     edi, _data
    3.         mov bl, _key
    4. @@:
    5.     xor     byte ptr [edi], bl
    6.     inc edi
    7.     inc bl
    8.     loop    @B
    если такое возможно.

    Благодарю за внимание.
     
  2. leo

    leo Active Member

    Публикаций:
    0
    Регистрация:
    4 авг 2004
    Сообщения:
    2.542
    Адрес:
    Russia
    Если _size кратно 8, то примерно так:
    Код (Text):
    1. q1 dq 0706050403020100h
    2. q2 dq 0808080808080808h
    3.  
    4.   movzx eax,byte [_key]
    5.   movd mm1,eax
    6.   mov ecx,[_size]
    7.   lea edx,[_data]
    8.   punpcklbw mm1,mm1 ;размножаем _key на 8 байт
    9.   punpcklwd mm1,mm1
    10.   punpckldq mm1,mm1
    11.   paddb mm1,[q1] ;= inc _key
    12.   movq mm2,[q2]
    13. @@:
    14.   movq mm0,[edx]
    15.   pxor mm0,mm1
    16.   movq [edx],mm0
    17.   paddb mm1,mm2 ;= inc _key
    18.   add edx,8
    19.   sub ecx,8
    20.   jnz @B
    21.   ;emms