La au moins on sait à quoi ça sert.Le bit 21 des FLAGS permet de savoir si le CPU a le CPUID
➽ CPUID : http://www.gladir.com/LEXIQUE/ASM/cpuid.htm
Si on souhaite lire le constructeur du processeur alors on met la valeur 0 dans le registre EAX pour lire ensuite les registre EBX, ECX, EDX (Sont fous ces fondeurs de mettre leurs noms sur 3 registres )
Code : Tout sélectionner
;CPUID fournit une interface pour demander des informations concernant un CPU.
;Cette instruction retourne les informations du microprocesseur dans les 4 registres suivants: EAX, EBX, ECX, EDX.
Procedure.s CPUGetVendor()
Protected a.l ;Cette variable contiendra la valeur du registre EBX
Protected b.l ;Cette variable contiendra la valeur du registre EDX
Protected c.l ;Cette variable contiendra la valeur du registre ECX
;si EAX = 0 alors EAX retourne les valeurs des registres EBX, EDX, ECX
!mov eax,0
!cpuid
;EBX ← chaîne de caractères d'identification du fabricant :
; Intel: 756E6547h ("Genu")
; AMD: 68747541h ("Auth")
!mov [p.v_a], ebx
;EDX ← chaîne de caractères d'identification du fabricant :
; Intel: 49656E69h ("inel")
; AMD: 69746E65h ("enti")
!mov [p.v_b], edx
;ECX ← chaîne de caractères d'identification du fabricant :
; Intel: 6C65746Eh ("ntel")
; AMD: 444D4163h ("cAMD")
!mov [p.v_c], ecx
Debug "Valeur du registre EBX: " + PeekS(@a, 4, #PB_Ascii)
Debug "Valeur du registre EDX: " + PeekS(@b, 4, #PB_Ascii)
Debug "Valeur du registre ECX: " + PeekS(@c, 4, #PB_Ascii)
ProcedureReturn PeekS(@a, 4, #PB_Ascii) + PeekS(@b, 4, #PB_Ascii) + PeekS(@c, 4, #PB_Ascii)
EndProcedure
Debug "Fabricant: " + CPUGetVendor()