Обработка данных в зависимости от процессора

Тема в разделе "WASM.ASSEMBLER", создана пользователем Magnum, 6 сен 2008.

  1. Magnum

    Magnum New Member

    Публикаций:
    0
    Регистрация:
    29 дек 2007
    Сообщения:
    925
    САБЖ

    Есть три варианта функции обработки данных

    Первый вариант
    Исключительно на интструкциях 386

    Второй вариант
    С использованием SSE

    Третий вариант
    С использованием SSE-II

    Через cpuid пытаюсь узнать, что за проц и передавать управление на соответствующую процедуру

    Вопрос.
    Где можно почитать подробно о cpuid и какие значения в зависимости от процессора она возвращает?

    ЗЫ: как я понимаю, нужно рыть в маны от амд и интела. Подскажите. в каких томах находится описание ? Еще лучше, если скажете страницы =))))

    Заранее благодарен
     
  2. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    Magnum
    Ты сегодня точно решил приколоться по полной.
    http://www.wasm.ru/article.php?article=hardzen
     
  3. twgt

    twgt New Member

    Публикаций:
    0
    Регистрация:
    15 янв 2007
    Сообщения:
    1.494
    Код (Text):
    1. format pe console
    2. entry start
    3. include '%fasminc%\win32ax.inc'
    4. .data
    5. buff   db 'Supported instructions: ',4+4+5+5+6+7+7+1 dup(?)
    6. mmx    db 'MMX ',0
    7. sse    db 'SSE ',0
    8. sse2   db 'SSE2 ',0
    9. sse3   db 'SSE3 ',0
    10. ssse3  db 'SSSE3 ',0
    11. sse4_1 db 'SSE4.1 ',0
    12. sse4_2 db 'SSE4.2 ',0
    13.  
    14. .code
    15. start:
    16.   xor ecx,ecx
    17.   xor eax,eax
    18.   inc eax
    19.   cpuid
    20.   mov ebx,edx
    21.  
    22.   bt ebx,23
    23.   jnc @F
    24.   invoke strcat,buff,mmx
    25. @@:
    26.   bt ebx,25
    27.   jnc @F
    28.   invoke strcat,buff,sse
    29. @@:
    30.   bt ebx,26
    31.   jnc @F
    32.   invoke strcat,buff,sse2
    33. @@:
    34.   xor eax,eax
    35.   inc eax
    36.   cpuid
    37.  
    38.   mov ebx,ecx
    39.   bt ebx,0
    40.   jnc @F
    41.   invoke strcat,buff,sse3
    42. @@:
    43.   bt ebx,9
    44.   jnc @F
    45.   invoke strcat,buff,ssse3
    46. @@:
    47.   bt ebx,19
    48.   jnc @F
    49.   invoke strcat,buff,sse4_1
    50. @@:
    51.   bt ebx,20
    52.   jnc @F
    53.   invoke strcat,buff,sse4_2
    54. @@:
    55.   cinvoke printf,buff
    56.   cinvoke exit
    57.  
    58. data import
    59.  library msvcrt,'msvcrt.dll'
    60.  include '%fasminc%\msvcrt.inc'
    61. end data
    делал по мануалу интела
     
  4. Magnum

    Magnum New Member

    Публикаций:
    0
    Регистрация:
    29 дек 2007
    Сообщения:
    925
    Booster, twgt
    спс
    сонный уже просто...
     
  5. twgt

    twgt New Member

    Публикаций:
    0
    Регистрация:
    15 янв 2007
    Сообщения:
    1.494
    318148.pdf
    с 31 страницы
     
  6. 2FED

    2FED New Member

    Публикаций:
    0
    Регистрация:
    20 фев 2008
    Сообщения:
    1.002
    Код (Text):
    1. .686
    2. .model flat
    3. option casemap: none
    4. .data
    5.   supSSE DB 1
    6. .code
    7. _ssesupport proc
    8.   mov  EAX, 1
    9.   cpuid
    10.   test EDX, 2000000h
    11.   jnz  exit
    12.   mov  supSSE, 0
    13. exit:
    14.   xor  EAX, EAX
    15.   mov  AL, supSSE
    16.   ret
    17. _ssesupport endp
    18. end