какая директива MASM9 разрешает SSE-инструкции?

Тема в разделе "WASM.BEGINNERS", создана пользователем Dmitry_Milk, 21 фев 2008.

  1. Dmitry_Milk

    Dmitry_Milk Member

    Публикаций:
    0
    Регистрация:
    20 ноя 2007
    Сообщения:
    535
    Собственно сабж. Пробовал .sse по аналогии с .mmx - не понимает.
     
  2. KeSqueer

    KeSqueer Сергей

    Публикаций:
    0
    Регистрация:
    19 июл 2007
    Сообщения:
    1.183
    Адрес:
    Москва
    http://www.google.ru/search?q=masm+allow+sse
     
  3. asmlamo

    asmlamo Well-Known Member

    Публикаций:
    0
    Регистрация:
    18 май 2004
    Сообщения:
    1.729
    ; (c) 2007 Пример работы с инструкциями MMX SSE

    .data

    AnyQword dq 1234567890ABCDEFh
    sse_data dq 000000000000000fh

    .code



    start:



    ; MMX

    mov eax,0ffffffffh

    movq MM1,[AnyQword]

    movd MM1,eax

    pxor MM0,MM1




    movd MM2,eax
    movd MM3,eax
    movd MM4,eax
    movd MM5,eax
    movd MM6,eax
    movd MM7,eax


    ; SSE

    movss XMM(0),[sse_data]
    movss XMM(1),[sse_data]
    movss XMM(2),[sse_data]
    movss XMM(3),[sse_data]
    movss XMM(4),[sse_data]
    movss XMM(5),[sse_data]
    movss XMM(6),[sse_data]
    movss XMM(7),[sse_data]


    invoke ExitProcess,NULL ; Выход из программы.




    end start
     
  4. Dmitry_Milk

    Dmitry_Milk Member

    Публикаций:
    0
    Регистрация:
    20 ноя 2007
    Сообщения:
    535
    Как сложно вы отвечаете. А достаточно было написать одно слово ".xmm". KeSqueer, спасибо за наводку :)
     
  5. Dmitry_Milk

    Dmitry_Milk Member

    Публикаций:
    0
    Регистрация:
    20 ноя 2007
    Сообщения:
    535
    Кстати, вот интересно

    "By default the PIII will NOT run SSE instructions, the OS, DOS Extender, or whatever must check using CPUID features bit to determine if SSE is supported by the CPU and then set bit 9 of CR4 to enable SSE & FXSR, bit 10 of CR4 deals with SSE fault handling. If bit 9 is NOT set FXSAVE, FXRSTOR and the SSE opcodes will trap. The PREFETCHxx instructions are the ONLY ones that will not, as they are treated as NOP's on all P6 CPUs that don't decode them to specific instructions."

    Это что, получается, если я работаю на PIII под вин98, то обязательно должен колдовать с CR руками (ведь вин98 разрабатывалась до появляения PIII и SSE)?
     
  6. asmlamo

    asmlamo Well-Known Member

    Публикаций:
    0
    Регистрация:
    18 май 2004
    Сообщения:
    1.729
    Ну если вы такой умный то почему в Гугль сразу не залезли ?

    Недостаточно !

    В мануалах пишут:

    movss XMM,[sse_data]

    а в асме нужно писать:

    movss XMM(0),[sse_data]
     
  7. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    Поправлю: "в масме нужно писать".
     
  8. Dmitry_Milk

    Dmitry_Milk Member

    Публикаций:
    0
    Регистрация:
    20 ноя 2007
    Сообщения:
    535
    Я умный, только вот с поисками нужной информации у меня проблема - поисковики вечно не понимают, что я хочу найти. Они, собаки, мне все учебники по SSE подсовывали, а как директива в масме называется - молчали как партизаны. Вы вот тоже ведь меня не поняли - код привели, а директиву - нет. Видать и здесь я не так спросил :)

    Более того, я этих директив (.mmx, .xmm) не нашел даже в хелпах самого масма, откопал только .mmx в примере. Да и через гугл я эту информацию нашел не в технической документации, а в какой-то форумной переписке! Какая то тайна за семью печатями :-/

    Хмм, интересно. Я на шару писал xmm0 (без скобок) - как в инстракшн сете было написано. И работает. Со скобками тоже работает.

    Да, и загадочным образом SSE под вин98 работает без всякой инициализации CR-регистров.
     
  9. NoResponse

    NoResponse New Member

    Публикаций:
    0
    Регистрация:
    28 дек 2005
    Сообщения:
    89
    ну здрасти, приехали... а это что ? :)
    http://msdn2.microsoft.com/en-us/library/8t163bt0(VS.71).aspx
     
  10. asmfan

    asmfan New Member

    Публикаций:
    0
    Регистрация:
    10 июл 2006
    Сообщения:
    1.004
    Адрес:
    Abaddon
    Все mm0,mm(0),Mm0,mM0,... xmm0,xmm(0) это всё алиасы - можете посмотреть сами, сгенерив листинг микрософтовским ассемблером - там в низу листинга увидите как это всё определено через <equ> afair
     
  11. Dmitry_Milk

    Dmitry_Milk Member

    Публикаций:
    0
    Регистрация:
    20 ноя 2007
    Сообщения:
    535
    NoResponse, спасибо, то что нужно :)