"Оптимизация для PENTIUM процессора" - читать интересную книгу автора

22. СКОРОСТНЫЕ ИСПЫТАНИЯ
========================
У Pentium есть внутренний, 64 битный таймер, который может быть прочитан в
EDX:EAX при использовании инструкции RDTSC (чтение временной счетчик). Это
очень полезно для замера точного количества тактов, потребовавшихся на
исполнение части кода.

Нижеприведенная программа замеряет количество тактов, которое исполнялась
часть кода. Программа выполняет 10 раз, 10 раз сохраняя время ушедшее на
исполнение кода. Программа может использоваться как в 16 так и в 32 битном
режиме.

RDTSC MACRO ; макрос инструкции RDTSC
DB 0FH,31H
ENDM

ITER EQU 10 ; количество итераций

.DATA ; сегмент данных
ALIGN 4
COUNTER DD 0 ; счетчик цикла
TICS DD 0 ; временное хранение счетчика таймера
RESULTLIST DD ITER DUP (0) ; список результатов теста

.CODE ; сегмент кода
BEGIN: MOV [COUNTER],0 ; сброс счетчика цикла
TESTLOOP: ; проверка цикла
;**************** Делайте любую инициализацию здесь: *******************
FINIT
;**************** Конец инициализаций *********************************
RDTSC ; читаем счетчик таймера
MOV [TICS],EAX ; сохраняем его
CLD ; неспариваемый заполнитель
REPT 8
NOP ; восемь NOP, для анулирования затеняющего
; эффекта
ENDM

;**************** Впишите сюда тестируемые инструкции: ******************
FLDPI ; это только для примера
FSQRT
RCR EBX,10
FSTP ST
;********************* Конец блока тестируемых инструкций *****************

CLC ; неспариваемый заполнитель с затенением
RDTSC ; читаем таймер опять
SUB EAX,[TICS] ; вычисляем разницу
SUB EAX,15 ; уменьшаем число тактов, ушедшие на заполниетль
MOV EDX,[COUNTER] ; счетчик цикла