Foros - Stratos

Programadores => General Programadores => Mensaje iniciado por: Zaelsius en 03 de Diciembre de 2002, 10:11:31 AM

Título: CPUID y pijaditas
Publicado por: Zaelsius en 03 de Diciembre de 2002, 10:11:31 AM
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.
Título: CPUID y pijaditas
Publicado por: synchrnzr en 03 de Diciembre de 2002, 11:13:21 AM
                                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                                
Título: CPUID y pijaditas
Publicado por: fiero en 03 de Diciembre de 2002, 12:06:25 PM
                                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