Z Visual Studio Mogę odczytać liczbę cykli zegara z procesora, jak pokazano poniżej. Jak zrobić to samo z GCC?licznik cykli z 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
Tak, naprawdę potrzebuję RDTSC, a teraz mam go. Dziękuję Ci. – user763305
ten kod nie zawiera instrukcji serializacji, więc na każdym nowoczesnym procesorze (który jest poza kolejnością), przyniesie niepoprawne wyniki. zwykle używany jest cpuid. – markhahn
Wersja 64-bitowa generuje słabe połączenie z gcc. Aby go poprawić, przesuń 'rdx' 32 bity w lewo i lub ręcznie za pomocą' rax'. Rezultatem jest "rax". –