📄 wt_tsc.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 + -