源程序如下:
// Compile: cl /TC
#define WIN32_LEAN_AND_MEAN
#include <windows.h>
#include <stdio.h>
#define RDST _asm _emit 0x0f _asm _emit 0x31
float GetCpuSpeed()
{
__int64 cStart=0,cEnd=0;
unsigned __int64 nCtr=0,nCtrStop=0,nFrq=0;
QueryPerformanceFrequency((LARGE_INTEGER*)&nFrq);
QueryPerformanceCounter((LARGE_INTEGER*)&nCtrStop);
nCtrStop += nFrq;
_asm
{
RDST
mov DWORD PTR cStart,eax
mov DWORD PTR [cStart+4],edx
}
do
{
QueryPerformanceCounter((LARGE_INTEGER*)&nCtr);
}while(nCtr < nCtrStop);
_asm
{