begin process at 2012 02 09 20:31:23
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

API

 > CPU SPEED MGHZ (WIN32, ASM)

CPU SPEED MGHZ (WIN32, ASM)


 Information sur la source

Note :
10 / 10 - par 4 personnes
10,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :API Classé sous :API, CPU, SPEED, ASM Niveau :Débutant Date de création :20/06/2004 Date de mise à jour :07/03/2009 11:07:19 Vu / téléchargé :6 188 / 808

Auteur : BruNews

Ecrire un message privé
Site perso
Ce membre participe au partage de revenus publicitaires
Commentaire sur cette source (25)
Ajouter un commentaire et/ou une note


 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

  • __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
  • }
  • }
__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
  }
}


 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !
  •   Release
    • cpuSpeed.ex_Télécharger ce fichier [Réservé aux membres club]2 048 octets
  • cpuSpeed.cTélécharger ce fichier [Réservé aux membres club]Voir ce fichier2 628 octets
  • cpuSpeed.slnTélécharger ce fichier [Réservé aux membres club]Voir ce fichier881 octets
  • cpuSpeed.suoTélécharger ce fichier [Réservé aux membres club]8 192 octets
  • cpuSpeed.vcprojTélécharger ce fichier [Réservé aux membres club]3 851 octets

Télécharger le zip


 Historique

26 octobre 2005 17:38:06 :
site
02 mai 2006 00:07:00 :
commentaire
07 mars 2009 11:07:20 :
exe dispo dans zip

 Sources du même auteur

Source avec Zip VIDER ELEMENTS DE CORBEILLE WINDOWS7 (WIN64)
Source avec Zip Source avec une capture FIND TEXT (WIN64)
Source avec Zip DELETE DIRECTORY (WIN64)
Source avec Zip ENUM DIRECTORY (WIN64)
Source avec Zip TEMPLATES C/C++ POUR VS 2010

 Sources de la même categorie

Source avec Zip WIN32 TLS LENT par dguilmain
Source avec Zip VIDER ELEMENTS DE CORBEILLE WINDOWS7 (WIN64) par BruNews
Source avec Zip Source avec une capture FIND TEXT (WIN64) par BruNews
Source avec Zip DELETE DIRECTORY (WIN64) par BruNews
Source avec Zip ENUM DIRECTORY (WIN64) par BruNews

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture FIND TEXT (WIN64) par BruNews
Source avec Zip Source avec une capture CALENDRIER (WIN64) par BruNews
Source avec Zip COMMENTER CODE C <=> ASM (WIN64) par BruNews
Source avec Zip Source avec une capture CHAINE EN HEXA (WIN32) par BruNews
Source avec Zip Source avec une capture DATE EN OLE INT (WIN64) par BruNews

Commentaires et avis

Commentaire de neo_00110010101 le 20/06/2004 12:38:35

ça marche et c'est bon ! s'il y a des améliorations possibles : le programme en "temps réel" c'est à dire qu'on le lance et le résultat se raffraîchit toutes les x secondes.

Commentaire de Urgo le 21/06/2004 00:52:28

Moi je le trouve parfait comme ça! (même si je comprends rien à l'asm)

Commentaire de Renfield le 21/06/2004 06:40:04 administrateur CS

Ca confirme bien que mon CPU a pris un coup...... un 1700 reconnu en tant que 1100 ..... pas bien !!

BruNews, bien, encore une fois....

Commentaire de neo_00110010101 le 21/06/2004 12:11:29

tu veux dire que ton processeur à 1.4 Ghz tourne à 900 Mhz ?? vraiment étrange :)

Commentaire de LordBob le 21/06/2004 20:39:56

bah moi ca marche nickel !!!
10/10

Commentaire de BruNews le 21/06/2004 23:37:18 administrateur CS

Renfield &gt; verifie le reglage de ta carte mere, on ne sait jamais. J'avais un PC dans le temps qui avait des coupures au niveau de la pile, le reglage CPU changeait.
En esperant que ce ne soit que cela.

Commentaire de Setaou le 04/10/2004 11:05:53

Presque bon à 3Mhz près :)
Mon 2500+ à 1833 est reconnu à 1837 ... mais c'est négligeable comme erreur !

Commentaire de banane_rose le 18/08/2005 19:08:43

j'ai pleins d'erreurs de compil avec FncAsm.cpp
ASM c'est quoi ça ??

Commentaire de BruNews le 18/08/2005 19:17:59 administrateur CS

ASM est le seul langage compris par un processeur, ce que produit aussi un compilo depuis un listing C/C++.
FncAsm.cpp ne passe qu'avec les compilos qui prennent la syntaxe ASM au standard Intel, MS et Borland par exemple.

Commentaire de banane_rose le 18/08/2005 19:20:37

en gros si j'ai Dev-C++ je peux crever quoi ?
j'suis obligé de changer de compilo pour ça ?

Commentaire de BruNews le 18/08/2005 19:22:28 administrateur CS

Tu esaies de le traduire en sabir AT&T de gcc, comme je n'ai pas tué père et mère, ce n'est assurément pas moi qui le ferai.

Commentaire de banane_rose le 18/08/2005 19:24:37

" .. en sabir AT&T de gcc "
tu peux m'expliquer parce que moi je connais pas grand chose .

Commentaire de BruNews le 18/08/2005 19:30:18 administrateur CS

gcc n'est pas le compilo de Devcpp ? me semble que oui.

sabir (selon Larousse) = Langage difficilement compréhensible; charabia, jargon.

Ce compilo, en guise d'ASM, ne prend que des chaines qu'il placera dans le listing au moment de la compilation. Le format d'ASM qu'il prend est sur la syntaxe AT&T (inversion des opérandes, suffixe sur les opérateurs, etc...), pour résumer: une vraie daube.

Commentaire de banane_rose le 18/08/2005 19:34:54

et quels compilos acceptent ASM ?

Commentaire de BruNews le 18/08/2005 19:38:54 administrateur CS

Ceux de Intel, Borland et MS comme dit plus haut, pour résumer ce dont on se sert dans le monde professionnel. Les autres je ne connais pas.

Commentaire de banane_rose le 18/08/2005 20:58:28

c'est quoi MS ?

Commentaire de BruNews le 18/08/2005 22:40:09 administrateur CS

MS => une petite startup qui vient de se monter, certains disent MicroSoft.

Commentaire de Raish le 13/09/2005 21:25:16

Et y'aurai pas un code qui marcherai avec Dev-C++ avec widows.h?
Enfin qqchsoe de simple (même si rien n'est simple en programmation ^^)...
Merci d'avance.

Commentaire de Raish le 14/09/2005 19:14:44

Bah moi j'ai placé le code ASM entre des " ".
Comme ceci:

__asm("\
    or       ecx, ecx\
    jnz      short L1\
    lea      eax, [edx+1]\
    mov      byte ptr[edx], 48\
    mov      byte ptr[eax], cl\
    ret      0\
L1:\
    mov      [esp-4], edi\
    mov      [esp-8], edx\
    mov      edi, edx\
L2:\
    mov      eax, -858993459\
    mul      ecx\
    mov      eax, edx\
    shr      eax, 3\
    mov      edx, ecx\
    lea      ecx, [eax+eax*8]\
    add      ecx, eax\
    sub      edx, ecx\
    add      dl, 48\
    mov      [edi], dl\
    mov      ecx, eax\
    inc      edi\
    test     eax, eax\
    jnz      short L2\
    mov      byte ptr[edi], al\
    mov      [esp-12], edi\
    mov      eax, [esp-8]\
L3:\
    dec      edi\
    mov      dl, [eax]\
    mov      cl, [edi]\
    mov      [edi], dl\
    mov      [eax], cl\
    inc      eax\
    cmp      eax, edi\
    jb       short L3\
    mov      eax, [esp-12]\
    mov      edi, [esp-4]\
    ret      0\
  ");

Le problème c'est que sa m'affiche une bête erreur:
" too many memory references for 'or' ".
Et je ne la comprends pas.
Merci d'avance ;)

Commentaire de BruNews le 14/09/2005 19:33:43 administrateur CS

Ici tu peux remplacer le 'or' par 'test', sera idem pour l'algo.
M'étonnerait que ça règle le problème, je pense que le compilo t'indique le 'or' seulement parce que c'est la 1ere instruction rencontrée.

Commentaire de Raish le 14/09/2005 19:51:16

Effectivement, sa ne marche toujours pas.
Une autre idée stp?

Commentaire de BruNews le 14/09/2005 19:54:55 administrateur CS

Aucune, je n'utilise pas gcc.

Commentaire de spidermario le 01/02/2009 11:45:59

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

Commentaire de NitRic le 07/03/2009 01:00:37

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

Commentaire de spidermario le 15/03/2009 16:57:46

Merci, mais ma question portait sur le fonctionnement général du programme plus que comment ça marchait à travers Wine...
Merci quand même ^^

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

api webcam [ par alessan ] bonjour,je recherche une api gratuite pour pouvoir piloter, prendre des fotos (sans que cela s'affiche sur l'ecran) une webcam.merci d'avance! VC++ fait chier [ par GoldenEye ] Qui peut me dire comment on place le curseur où on veut et ce sans Borland ( conio.h et gotoxy aux chiottes donc ) sous DOS et avec VC++ 6.0 ( ça fait Registre ou API windows [ par Will ] Je souhaite recuperer les infos d'un pc (c a d la carte reseau, la carte son, le type de clavier etc...).Que dois-je utiliser, la base de registe wind API capte l'écran [ par Bin Laden ] Salut, Je cherche une fonction API qui capte le contenu de l'écran. QU'EST-CE QU'UNE API ? [ par ronan ] Je suis débutant et j'aimerais bien avoir une définition d'une Api. J'en entends beaucoup parler mais je sais pas trop ce que sais.Merci. API qui recupere son propre path [ par NetCommando ] je veux savoir comment une API recupere son prapre pathdu genre c:\app.exe , pour une aplication nomé "app"merci Temperature du cpu [ par victor inox ] Salut,J'aimerai en c acceder à la temperature de mon cpu. Comment faire ?Merci! API pour visualiser des pages HTML???????? [ par Tropdemalaveclesapi ] QQN connait une api pour afficher à l'écran une page HTML? merci à tous de réfléchir à la question! UTILISATIONS D'API [ par DEL ] comment utiliser les api findwindow, findwindowex et sendmessage en C ?merci d'avance =) ++DEL plusieurs dialog [API] [ par Xs ] voila, je faisait un prog, et pis tout d'un coup, j'ai eu envie de changer son design, qui été deja sous API WIN32.ce design consiste a avoir une dial


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 3,541 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales