Rdtsc
Материал из Википедии — свободной энциклопедии
rdtsc (Read Time Stamp Counter) — ассемблерная инструкция для платформы x86, читающая счётчик TSC (Time Stamp Counter) и возвращающая в регистрах EDX:EAX 64-битное количество тактов с момента последнего сброса процессора. rdtsc поддерживается в процессорах Pentium и старше. Опкод: 0F 31.
Содержание |
[править] Приложения rdtsc
rdtsc чаще всего используется:
- для точного измерения временных интервалов;
- в антиотладочных приёмах;
- как источник случайности для генераторов псевдослучайных чисел.
[править] Примеры использования rdtsc в языках высокого уровня
[править] Си
#include <stdint.h> extern __inline__ uint64_t rdtsc() { uint64_t x; __asm__ volatile (".byte 0x0f, 0x31" : "=A" (x)); 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;