Với Visual Studio Tôi có thể đọc số chu kỳ đồng hồ từ bộ xử lý như hình dưới đây. Làm thế nào để tôi làm điều tương tự với GCC?đếm chu kỳ đồng hồ wth 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
Có, tôi thực sự cần RDTSC, và bây giờ tôi có nó. Cảm ơn bạn. – user763305
mã này thiếu hướng dẫn tuần tự hóa, do đó, trên bất kỳ bộ xử lý hiện đại nào (không theo thứ tự), nó sẽ mang lại kết quả không chính xác. thường cpuid được sử dụng. – markhahn
Phiên bản 64 bit tạo ra lắp ráp kém với gcc. Để cải thiện nó, hãy thay đổi các bit 32 bit ở bên trái và bằng 'rax' theo cách thủ công. Kết quả là trong 'rax'. –