Дописал. Показал. Вроде все довольны
Защищать буду в понедельник. Пока готовлю Р-П записку и шлифую, в силу своих способностей, код.
Вопросы:
1. Инструкцию rdtsc (чтение счётчика тактов) TASM не признаёт даже при ".586p". "Illegal instruction" ругается. Что ему надо для успешной сборки этой инструкции? Пока спасаюсь так:
RDTSC MACRO
db 0fh
db 031h
ENDM
2. Вычитаю 64-битные числа. Из EDX:EAX вычитается [edx_tsc_1]:[eax_tsc_1]. Проверьте, правильно ли:
; Вычитаем
clc
sbb eax,[eax_tsc_1]
jnc not_borrow
and edx,0FFFFFFFEh
not_borrow:
sbb edx,[edx_tsc_1]
; Вычли. Результат в EDX:EAX
3. Число тактов, уходящих на интегрирование левыми прямоугольниками средствами FPU и CPU различается в 8-9 раз понятно в чью пользу. Это нормально?
UPD:
4. Число тактов немного колеблется:
FPU = {3737 , 3355 , 3450 , 3350 , ...}
CPU = {24676 , 25211 , 25466 , 24951 , ...}
Это 4 эксперимента над одними и теми же данными и одним и тем же кодом.
Мне очень важно знать, почему число тактов колеблется! Кто знает - ответьте. Что влияет? Что может повлиять?