Примеры использования rdtsc в языках высокого уровня: различия между версиями
Содержимое удалено Содержимое добавлено
Maxal (обсуждение | вклад) перенесено из w:Rdtsc |
(нет различий)
|
Версия от 00:50, 4 февраля 2012
Microsoft Visual C++
#include <intrin.h>
#pragma intrinsic(__rdtsc)
unsigned __int64 rdtsc() {
return __rdtsc();
}
GNU С / C++
#include <stdint.h>
extern __inline__ uint64_t rdtsc() {
uint64_t x;
__asm__ volatile ("rdtsc\n\tshl $32, %%rdx\n\tor %%rdx, %%rax" : "=a" (x) : : "rdx");
return x;
}
Pascal / Delphi
function RDTSC: comp;
var TimeStamp: record case byte of
1: (Whole: comp);
2: (Lo, Hi: cardinal);
end;
begin
asm
db $0F; db $31;
mov [TimeStamp.Lo], eax
mov [TimeStamp.Hi], edx
end;
Result := TimeStamp.Whole;
end;
В более новых версиях Delphi можно реализовать это так:
function RDTSC: UInt64; register;
asm
rdtsc
end;
PureBasic
Procedure.q RDTSC()
!rdtsc
ProcedureReturn
EndProcedure