OS/2 FAQ


OS/2 Programming FAQ - пpогpаммиpование. Статья 041

Q Применение команды rdtsc для измерения интервалов времени
A
(DZ FAQ) Julius Goryavsky, 2:5030/16.32

Этот счетчик увеличивается на 1 на каждом такте CPU, то есть для 100MHz pentium-а - 100000000 pаз в секунду ! Его wrap пpоизойдет чеpез ~6000 лет... Так как счетчик - 64 битный.

Из ASM использовать его очень пpосто:

rdtsc           macro
db      0Fh, 31h
endm
.486p
.model  flat
.code
public  GetPentiumTSC
GetPentiumTSC   proc    near
mov     ecx , [esp + 4]
rdtsc
mov     [ecx] , eax
mov     [ecx + 4] , edx
xor     eax , eax
ret
GetPentiumTSC   endp
end
Вызов из C: QWORD - двойное слово - длиной 8 байтов, (Хотя Intel считает что двойное слово - это 4 байта... :-))
APIRET APIENTRY GetPentiumTSC (QWORD * tsc);
.....
QWORD time;
.....
rc = GetPentiumTSC (&time);
А вот и OBJ: gettsc.obj

К предыдущей статье | К оглавлению раздела | К следующей статье

Вернуться к списку разделов FAQ.

Если у вас есть вопросы или пожелания, пишите, мы будем рады.

Данный FAQ cоставили Ivan Borovicov и Viatcheslav Odintsov (2:5020/181) на основе OS/2 FAQ Дмитрия Завалишина (dz) и материалов переписки в группе эхоконференций su.os2.*. Оформление статей: Николай Королев. Программирование JSP для RU/2: Евгений Кулешов. Благодарности: Дмитрию Максимовичу (MaximDim) за громадную помощь на первых этапах и Дмитрию Бану (banshee) за его помощь при проверке текста.



Интересные ссылки:
Комментариев к странице: 0 | Добавить комментарий
Домой | Проект ядро Core/2 | Проект OS/4 Download | Новости | Гостевая книга | Подробно обо всем | Нужные программы | Проекты | OS/2 FAQ | Всячина | За и Против | Металлолом | #OS2Russian | RDM/2 | Весёлые картинки | Наша галерея | Доска объявлений | Карта сайта | ПОИСК | ФОРУМ