Con Visual Studio posso leggere il conteggio del ciclo di clock dal processore come mostrato di seguito. Come faccio a fare la stessa cosa con GCC?conteggio del ciclo di clock 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ì, ho davvero bisogno di RDTSC, e ora ce l'ho. Grazie. – user763305
questo codice manca di istruzioni di serializzazione, quindi su qualsiasi processore moderno (che è fuori servizio), produrrà risultati errati. di solito si usa CPUID. – markhahn
La versione a 64 bit genera un assemblaggio scadente con gcc. Per migliorarlo, sposta 'rdx' 32 bit a sinistra o con' rax' manualmente. Il risultato è in 'rax'. –