j'ai découvert dans de la doc l'instruction RDTSC qui permet de lire le nombre de cycles d'horloges écoulés depuis le dernier reset.Cela peut permettre de mesurer la qualité d'un code.Evidemment,les résultats sont variables en fonction du nombre de programmes tournant en arrière plan et qui utilisent aussi des cycles.
Source / Exemple :
;-------- cycle horloge.asm
.586
.model flat,stdcall
option casemap:none
include cycle horloge.inc
INCLUDELIB user32.lib
INCLUDELIB kernel32.lib
Maitre PROTO :DWORD
GetModuleHandle TEXTEQU <GetModuleHandleA>
ExitProcess PROTO dwExitCode:DWORD
GetModuleHandle PROTO pString:PTR BYTE
.data
valeur dword 0
.code
debut:
invoke GetModuleHandle,0
invoke Maitre,eax
invoke ExitProcess,0
Maitre proc Hdl_GetModuleHandle:dword
CC
mov valeur,eax
;--------------------------
;instruction à mesurer en nombre de cycles d'horloge
mov eax,5
A1: dec eax
jnz A1
;----------------------------
CC
sub eax,valeur
AFFdec
ret
Maitre endp
end debut
;--------- cycle horloge.inc
MessageBox TEXTEQU <MessageBoxA>
MessageBox PROTO :DWORD,:DWORD,:DWORD,:DWORD
AFFdec macro
;--------------------------
; affiche la valeur entiere
; non signée de eax dans
; un messagebox
;--------------------------
LOCAL stocke,buffer,titre
.data
stocke qword 0
buffer BYTE 12 DUP(30h),0 ;12 caracteres+0 terminal
titre BYTE "nombre de cycles d'horloge écoulés",0
.code
mov dword ptr[stocke],eax
mov esi,offset buffer
add esi,11 ;pointe sur dernier caracteres=celui de droite
mov ecx,0
divise:
mov edx,dword ptr stocke+4
mov eax,dword ptr stocke
mov ebx,10
div ebx
mov dword ptr stocke,eax
add edx,30h
mov [esi],dl
dec esi
cmp eax,0
ja divise
;affichage du temps
invoke MessageBox,0,addr buffer,addr titre,0
endm
CC macro
;rdtsc=read TSC=Time Stamp Counter=compte les cycles
;d'horloge,renvoie le resultat dans edx:eax
;=0 au reset
.code
rdtsc
endm
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.