CPU - Drapeaux - Obtenir leur état

Pour discuter de l'assembleur
Avatar de l’utilisateur
falsam
Messages : 7323
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: CPU - Drapeaux - Obtenir leur état

Message 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()
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Ollivier
Messages : 4197
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

Re: CPU - Drapeaux - Obtenir leur état

Message par Ollivier »

@Mesa

Merci pour contribution, j'ai rajouté une recommandation en tête de sujet.
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: CPU - Drapeaux - Obtenir leur état

Message par Ar-S »

(Sont fous ces fondeurs de mettre leurs noms sur 3 registres )
Mais c'est claire.
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Ollivier
Messages : 4197
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

Re: CPU - Drapeaux - Obtenir leur état

Message 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.
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Re: CPU - Drapeaux - Obtenir leur état

Message 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)
ImageLe bonheur est une route...
Pas une destination

PureBasic Forum Officiel - Site PureBasic
Ollivier
Messages : 4197
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

Re: CPU - Drapeaux - Obtenir leur état

Message 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é!
Répondre