Page 1 sur 2

Re: CPU - Drapeaux - Obtenir leur état

Publié : lun. 24/oct./2016 16:25
par falsam
Merci Mesa
Le bit 21 des FLAGS permet de savoir si le CPU a le CPUID
La au moins on sait à quoi ça sert.

➽ 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()

Re: CPU - Drapeaux - Obtenir leur état

Publié : lun. 24/oct./2016 17:42
par Ollivier
@Mesa

Merci pour contribution, j'ai rajouté une recommandation en tête de sujet.

Re: CPU - Drapeaux - Obtenir leur état

Publié : mar. 25/oct./2016 10:46
par Ar-S
(Sont fous ces fondeurs de mettre leurs noms sur 3 registres )
Mais c'est claire.

Re: CPU - Drapeaux - Obtenir leur état

Publié : mar. 25/oct./2016 19:40
par Ollivier
@Falsam

Merci pour ta contribution. L'inventaire des drapeaux d'états est arborescent. Par exemple, CpuId indique si l'instruction CMov est prise en charge ou non.

Re: CPU - Drapeaux - Obtenir leur état

Publié : sam. 29/oct./2016 11:31
par Kwai chang caine
Au bout de X codes, j'ai enfin à peu prés compris à quoi ça servait (Principalement celui de FALSAM :wink: )
C'est le bout du monde pour moi, mais ça reste passionnant 8O
Merci à tous 8)

Re: CPU - Drapeaux - Obtenir leur état

Publié : sam. 29/oct./2016 22:25
par Ollivier
Ben, c'est bien... Au moins, Falsam a su te donner un goût à ça, pendant le moment où je ne peux être sur un ordinateur!

Scully me rappelle des trucs algébriques : j'espère que tu m'en excuseras pour le retard occasionné!