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.
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
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.htmlEn 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