⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 wt_tsc.c

📁 好东西呢
💻 C
字号:

#include "tsc.h"
#include <crblib/timer.h>

#define CPU_HZ (CPU_MHZ*1000000.0)

void printTSC(double tsc, FILE *outF)
{
fprintf(outF,"%d.%04d",(int)tsc,(int)(tsc*10000.0));
}
/** extern assembly from rdtsc.asm ***/

#ifdef PENTIUM	/** use the TSC ***/

#ifdef _MSC_VER

extern void RDTSC_FUNC(ulong *a,ulong *b);
#define _RDTSC_FUNC RDTSC_FUNC

#else

extern void _RDTSC_FUNC(ulong *a,ulong *b);

#endif

static ulong TSC_H_1,TSC_L_1;
static ulong TSC_H_2,TSC_L_2;

void startTSC(void)
{
_RDTSC_FUNC(&TSC_H_1,&TSC_L_1);
}

#define msw_scale (4294967296.0/CPU_HZ)
#define lsw_scale (1.0/CPU_HZ)

double diffTSC(void)
{

_RDTSC_FUNC(&TSC_H_2,&TSC_L_2);

return	(TSC_H_2 - TSC_H_1)*msw_scale +
		(TSC_L_2 - TSC_L_1)*lsw_scale;

}

#else // no PENTIUM : fake it

static clock_t save_clock;

void startTSC(void) { save_clock = clock(); }
double diffTSC(void){ return ((double)(clock() - save_clock) / (double)CLOCKS_PER_SEC); }

#endif // PENTIUM

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -