I’m not all that good at ASM so what all this does
I can’t explain in much detail.
[code lang=”delphi”]function TForm1.GetCpuSpeed: Extended;
var
t: DWORD;
mhi, mlo, nhi, nlo: DWORD;
t0, t1, chi, clo, shr32: Comp;
begin
shr32 := 65536;
shr32 := shr32 * 65536;
t := GetTickCount;
while t = GetTickCount do begin end;
asm
DB 0FH
DB 031H
mov mhi,edx
mov mlo,eax
end;
while GetTickCount < (t + 1000) do begin end; asm DB 0FH DB 031H mov nhi,edx mov nlo,eax end; chi := mhi; if mhi < 0 then chi := chi + shr32; clo := mlo; if mlo < 0 then clo := clo + shr32; t0 := chi * shr32 + clo; chi := nhi; if nhi < 0 then chi := chi + shr32; clo := nlo; if nlo < 0 then clo := clo + shr32; t1 := chi * shr32 + clo; Result := (t1 - t0) / 1E6; end; //and example call procedure TForm1.Button1Click(Sender: TObject); begin label1.Caption := FloatToStr(GetCpuSpeed) + 'mhz'; end; [/code] [tags]Delphi, System[/tags]
0 Kommentare zu “Get CPU speed”