САБЖ Есть три варианта функции обработки данных Первый вариант Исключительно на интструкциях 386 Второй вариант С использованием SSE Третий вариант С использованием SSE-II Через cpuid пытаюсь узнать, что за проц и передавать управление на соответствующую процедуру Вопрос. Где можно почитать подробно о cpuid и какие значения в зависимости от процессора она возвращает? ЗЫ: как я понимаю, нужно рыть в маны от амд и интела. Подскажите. в каких томах находится описание ? Еще лучше, если скажете страницы =)))) Заранее благодарен
Код (Text): format pe console entry start include '%fasminc%\win32ax.inc' .data buff db 'Supported instructions: ',4+4+5+5+6+7+7+1 dup(?) mmx db 'MMX ',0 sse db 'SSE ',0 sse2 db 'SSE2 ',0 sse3 db 'SSE3 ',0 ssse3 db 'SSSE3 ',0 sse4_1 db 'SSE4.1 ',0 sse4_2 db 'SSE4.2 ',0 .code start: xor ecx,ecx xor eax,eax inc eax cpuid mov ebx,edx bt ebx,23 jnc @F invoke strcat,buff,mmx @@: bt ebx,25 jnc @F invoke strcat,buff,sse @@: bt ebx,26 jnc @F invoke strcat,buff,sse2 @@: xor eax,eax inc eax cpuid mov ebx,ecx bt ebx,0 jnc @F invoke strcat,buff,sse3 @@: bt ebx,9 jnc @F invoke strcat,buff,ssse3 @@: bt ebx,19 jnc @F invoke strcat,buff,sse4_1 @@: bt ebx,20 jnc @F invoke strcat,buff,sse4_2 @@: cinvoke printf,buff cinvoke exit data import library msvcrt,'msvcrt.dll' include '%fasminc%\msvcrt.inc' end data делал по мануалу интела
Код (Text): .686 .model flat option casemap: none .data supSSE DB 1 .code _ssesupport proc mov EAX, 1 cpuid test EDX, 2000000h jnz exit mov supSSE, 0 exit: xor EAX, EAX mov AL, supSSE ret _ssesupport endp end