Con Visual Studio, puedo leer el recuento de ciclo de reloj del procesador como se muestra a continuación. ¿Cómo hago lo mismo con GCC?recuento de ciclos de reloj con GCC
#ifdef _MSC_VER // Compiler: Microsoft Visual Studio
#ifdef _M_IX86 // Processor: x86
inline uint64_t clockCycleCount()
{
uint64_t c;
__asm {
cpuid // serialize processor
rdtsc // read time stamp counter
mov dword ptr [c + 0], eax
mov dword ptr [c + 4], edx
}
return c;
}
#elif defined(_M_X64) // Processor: x64
extern "C" unsigned __int64 __rdtsc();
#pragma intrinsic(__rdtsc)
inline uint64_t clockCycleCount()
{
return __rdtsc();
}
#endif
#endif
Sí, realmente necesito RDTSC, y ahora lo tengo. Gracias. – user763305
este código carece de una instrucción de serialización, por lo que en cualquier procesador moderno (que esté fuera de servicio), dará resultados incorrectos. usualmente se usa cpuid. – markhahn
La versión de 64 bits genera un ensamblaje deficiente con gcc. Para mejorarlo, cambie 'rdx' 32 bits a la izquierda y/o con' rax' manualmente. El resultado es en 'rax'. –