проблема EMMX <-> SSE

Тема в разделе "WASM.ASSEMBLER", создана пользователем Puncher, 23 сен 2005.

Статус темы:
Закрыта.
  1. Puncher

    Puncher New Member

    Публикаций:
    0
    Регистрация:
    13 авг 2005
    Сообщения:
    16
    Адрес:
    Russia
    В наборах команд EMMX (расширение MMX позволяют использовать регистры mm/xmm) и SSE есть схожие инструкци:



    EMMX:

    MOVNTDQ mem128,xmm

    por xmm,mem128

    pand ...



    SSE:

    MOVNTPS mem128,xmm

    orps xmm,mem128

    andps ...



    Проблема такая:

    команды SSE работают нормально,а вот команды типа



    pxor xmm1,xmm1 вместо обнуления xmm1 обнуляется mm1!

    MOVNTDQ dqword [mem128],xmm0 по адресу mem128 сохраняется не содержимое регистра xmm0, а содержимое mm0.





    Программу компилировал FASM 1.64, проверял в SI 4.32. Помогите разобраться в чём касяк !



    P.S. Проц Barton, SSE и EMMX тянет. И если у кого есть возможность, проверте как работают такие команды на пне...
     
  2. Black_mirror

    Black_mirror Active Member

    Публикаций:
    0
    Регистрация:
    14 окт 2002
    Сообщения:
    1.035
    Puncher

    pxor для xmm регистров это SSE2, проверь 26й бит в регистре edx, после cpuid с eax=1
     
  3. Puncher

    Puncher New Member

    Публикаций:
    0
    Регистрация:
    13 авг 2005
    Сообщения:
    16
    Адрес:
    Russia
    Тфу блин! Точно...



    Пасиб за пазъяснение.
     
Статус темы:
Закрыта.