, :
inline unsigned long long rdtsc() {
unsigned int lo, hi;
asm volatile (
"cpuid \n"
"rdtsc"
: "=a"(lo), "=d"(hi)
: "a"(0)
: "%ebx", "%ecx");
return ((unsigned long long)lo) | (((unsigned long long)hi) << 32);
}
, ASM, - . C, , ASM. , "a" 0, , eax. , - , , .
, "" . CPUID eax, ebx, ecx edx. , , , . eax edx, . clobbers, , , .