Cpu speed mghz (win32, asm)

Soyez le premier à donner votre avis sur cette source.

Vue 7 518 fois - Téléchargée 884 fois

Description

Vitesse precise de CPU calculee en 125 milliemes de seconde.
Teste depuis P200 Win98 a bixeon sur WinServer 2008 x64.
Juste bnCpuSpeedMghz() a ajouter dans vos progs pour s'en servir.

Source / Exemple :


__declspec(naked) DWORD __stdcall bnCpuSpeedMghz()
{
  __asm {
    sub     esp, 28
    lea     eax, dword ptr[esp+8]
    push    eax
    call    dword ptr QueryPerformanceFrequency
    mov     [esp+24], esi
    test    eax, eax
    je      short cpuExit
    mov     esi, dword ptr QueryPerformanceCounter
    push    esp
    call    esi
    mov     edx, dword ptr[esp+8]
    mov     eax, dword ptr[esp+12]
    shrd    edx, eax, 3
    shr     eax, 3
    add     dword ptr[esp], edx
    adc     dword ptr[esp+4], eax
    rdtsc
    mov     dword ptr[esp+16], eax
    mov     dword ptr[esp+20], edx
milli125:
    lea     ecx, dword ptr[esp+8]
    push    ecx
    call    esi
    mov     edx, dword ptr[esp+12]
    mov     eax, dword ptr[esp+8]
    cmp     edx, dword ptr[esp+4]
    jb      short milli125
    ja      short outMilli
    cmp     eax, dword ptr[esp]
    jb      short milli125
outMilli:
    rdtsc
    mov     ecx, 2251799814
    sub     eax, dword ptr[esp+16]
    mul     ecx
    mov     eax, edx
    mov     esi, [esp+24]
    shr     eax, 16
cpuExit:
    add     esp, 28
    ret     0
  }
}

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

spidermario
Messages postés
130
Date d'inscription
mercredi 26 octobre 2005
Statut
Membre
Dernière intervention
14 mars 2009
-
Merci, mais ma question portait sur le fonctionnement général du programme plus que comment ça marchait à travers Wine...
Merci quand même ^^
NitRic
Messages postés
409
Date d'inscription
mardi 1 mai 2001
Statut
Membre
Dernière intervention
15 août 2011
-
raish: alternative complète pour linux => http://gwenole.beauchesne.info/en/projects/cpuinfo

spidermario: je ne me souviens pas de tout mais sous linux il est possible de se rendre en kernel-mode (avec un vrai-faux kernel ou quelque chose dans ce genre la, je sais plus) et ca permet de faire s'exécuter certaines parties du code ou tout un code directement par le processeur sous vmware, probablement que c'est pareil avec Wine ... ceci expliquerait cela ...

je crois que le kernel (mini-kernel) en question gère ce qui ne peut être partagé entre OS et laisse le reste aux matériels (processeur, ...), si ce « reste » peut être partagé ... faudrait vérifier pour être sûr ...
spidermario
Messages postés
130
Date d'inscription
mercredi 26 octobre 2005
Statut
Membre
Dernière intervention
14 mars 2009
-
Whaw, même depuis Linux à travers Wine, il me trouve la bonne valeur. Comment s'y prend le programme pour calculer ça ? (Mes piètres connaissances en assembleur ne me permettent pas de le comprendre par moi-même).
BruNews
Messages postés
21054
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
7 novembre 2014
13 -
Aucune, je n'utilise pas gcc.
cs_Raish
Messages postés
8
Date d'inscription
mercredi 9 mars 2005
Statut
Membre
Dernière intervention
3 octobre 2005
-
Effectivement, sa ne marche toujours pas.
Une autre idée stp?

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.