Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





CPUID y pijaditas

Iniciado por Zaelsius, 03 de Diciembre de 2002, 10:11:31 AM

« anterior - próximo »

Zaelsius

Pues sólo pido un buen link a una página de programación en ensamblador, pero con iformación sobre los últimos procesadores(y ya he visitado intel.com y amd.com) en la que haya ejemplos de instrucciones como CPUID.

Esta instrucción la he visto en varios ejemplos y ya sé como detectar 3D Now!, MMX y alguna cosa más, pero aún no sé como se obtienen las cadenas tipo "Authetic AMD™" o la supuesta velocidad del micro.
Creo que con un documento tardaré menos en averiguarlo que utilizando el W32Dasm para ver qué hacen algunos programas que he visto x ahí.

La razón es autodetectar el tipo de CPU para mostrarlo al arrancar un juego, que aunque sólo sea una pijadita siempre mola y da un toque de professionalidá, y de paso, pues aprendo algo más de assembler.

synchrnzr

                                No me acuerdo mucho del tema, pero antes había tocado cosas y creo que CPUID te devolvía sólo un carácter, por ejemplo "A" para "Authentic AMD" o "G" para "Genuine Intel"

Sync                                

fiero

                                En esta dirección de amd te puedes bajar unas funciones que están muy bien:
http://www.amd.com/us-en/Processors/Develo...71_2364,00.html

En cuanto a lo que comentais de obtener la cadena del micro, devuelve 4 caracteres en cada registro. Este código está sacado de esas funciones de amd:



   case CPU_MFG:

       __asm {

           // Query manufacturer string

           // function 0 = manufacturer string

           mov     eax,0          

           CPUID



// These tests could probably just check the 'ebx' part of the string,

// but the entire string is checked for completeness.  Plus, this function

// should not be used in time-critical code, because the CPUID instruction

// serializes the processor. (That is, it flushes out the instruction pipeline.)



           // Test for 'AuthenticAMD'

           cmp     ebx,'htuA'

           jne     short not_amd

           cmp     edx,'itne'

           jne     short not_amd

           cmp     ecx,'DMAc'

           jne     short not_amd

           mov     eax,MFG_AMD

           jmp     short next_test



           // Test for 'GenuineIntel'

        not_amd:

           cmp     ebx,'uneG'

           jne     short not_intel

           cmp     edx,'Ieni'

           jne     short not_intel

           cmp     ecx,'letn'

           jne     short not_intel

           mov     eax,MFG_INTEL

           jmp     short next_test



un saludo                                
www.videopanoramas.com Videopanoramas 3D player