1. Если вы только начинаете программировать на ассемблере и не знаете с чего начать, тогда попробуйте среду разработки ASM Visual IDE
    (c) на правах рекламы
    Скрыть объявление

Нужна SSE/MMX команда

Тема в разделе "WASM.BEGINNERS", создана пользователем rdtsc, 13 дек 2010.

  1. rdtsc

    rdtsc Параллелепипедов Артем

    Публикаций:
    0
    Регистрация:
    10 мар 2009
    Сообщения:
    186
    Адрес:
    Москва
    В нижем дворде xmm0 лежит 4 байта.
    Есть ли команда или можно с эмулировать это, которые распределяют каждый байт по своему дворду внутри xmm0.

    Т.е.: xmm0=0...0|0...0|0...0|ABCD
    После команд(ы) получаем: xmm0=000A|000B|000C|000D

    Или же может в MMX чтото есть подобное? но соответстенно по 2м двордам распротранять..

    Спасибо.

    PS: когдато давно у меня была очень клевая презентация (вроде Интела) где в картинках объяснются ССЕ/ММХ ...может кто подскажет где она есть?
     
  2. cppasm

    cppasm New Member

    Публикаций:
    0
    Регистрация:
    18 июл 2006
    Сообщения:
    923
    pshufb, но это только SSSE3
    Если можно, лучше от байт перейти к словам и тогда pshufw - это SSE.
     
  3. s_d_f

    s_d_f New Member

    Публикаций:
    0
    Регистрация:
    15 май 2008
    Сообщения:
    342
    Через SSE2 можно примерно так
    Код (Text):
    1.     .const
    2.         xmm_bytes db 1,2,3,4
    3.     .code
    4.     movd xmm0,dword ptr xmm_bytes
    5.     pxor xmm1,xmm1
    6.     punpcklbw xmm0,xmm1
    7.     punpcklwd xmm0,xmm1
     
  4. leo

    leo Active Member

    Публикаций:
    0
    Регистрация:
    4 авг 2004
    Сообщения:
    2.542
    Адрес:
    Russia
    PXOR mm1,mm1
    PUNPCKLBW mm0,mm1
    PUNPCKLWD mm0,mm1

    ps: кто не успел, тот опоздал ;)
     
  5. rdtsc

    rdtsc Параллелепипедов Артем

    Публикаций:
    0
    Регистрация:
    10 мар 2009
    Сообщения:
    186
    Адрес:
    Москва
    Да,красиво..Не обратил внимание на этот тип команд - думал они тока для перемешивания сгодятся..А они оказывается вона какую пользу олицетворяют.
    Жаль что,тока к памяти зазывание идет,что бьет по производительности..Хотя вот если только mov eax,1234; movd xmm0,eax;
    Вобщем,всем спасибо, все свободны. (шутка)
     
  6. s_d_f

    s_d_f New Member

    Публикаций:
    0
    Регистрация:
    15 май 2008
    Сообщения:
    342
    Не думай о милисеках с высока.
    Пройдут они и сам поймёшь наверное....
    (шутка) ;)