- TSC
-
rdtsc (Read Time Stamp Counter) — ассемблерная инструкция для платформы Pentium и более новых. Опкод: 0F 31. В многозадачных операционных системах инструкция может быть превращена в привилегированную (установлен 3 бит в управляющем регистре CR4), и ее использование приведет к генерации исключения в программе.
Содержание
Приложения rdtsc
rdtsc чаще всего используется:
- для точного измерения временных интервалов;
- в антиотладочных приёмах;
- как источник энтропии для генераторов псевдослучайных чисел.
Примеры использования rdtsc в языках высокого уровня
Microsoft Visual C++
#include <intrin.h> #pragma intrinsic(__rdtsc) unsigned __int64 rdtsc() { return __rdtsc(); }
С
#include <stdint.h> extern __inline__ uint64_t rdtsc() { uint64_t x; __asm__ volatile (".byte 0x0f, 0x31" : "=A" (x)); return x; }
Pascal /
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;
- описание RDTSC (англ.).
В более новых версиях Delphi можно реализовать это так:
function RDTSC: Int64; register; asm rdtsc end;
Ссылки
Примечания
Wikimedia Foundation. 2010.