Глупый вопрос, но запамятовал, а нагуглить не смог: как измерить количество тактов определённого куска кода в дебаггере UnrealSpeccy? В левом нижнем углу написано time delta. Что нужно сделать, чтобы там показывались такты нужного мне куска?
Вид для печати
Глупый вопрос, но запамятовал, а нагуглить не смог: как измерить количество тактов определённого куска кода в дебаггере UnrealSpeccy? В левом нижнем углу написано time delta. Что нужно сделать, чтобы там показывались такты нужного мне куска?
Угу, ещё нашёл второй вариант - поставить PC в начало измеряемого куска, а курсор в конец - и нажать F4, что, в общем-то, то же самое.
Проблема возникает, когда в этом куске кода встречаются условные RET.
открываешь свой код в дебагере ZXMAK2, записываешь значение T, доводишь исполнение до нужной точки и записываешь второе значение T, вычитаешь из него первое и получаешь число тактов.
Количество тактов для иснтрукций отображается после точки с запятой рядом с самой инструкцией в окне с дизассемблированым кодом.
Кстати в unreal тайминги некоторых инструкций некорректные. Еще в unreal с таймингами прерываний была проблемка, насколько помню что-то связаное с halt'ом, но заметить это можно только при определенных условиях. Деталей уже не помню. Для пентагона такие неточности +-1 такт не так страшны, а вот на contended memory это привело бы к серьезным ошибкам.
Если процедура шибко большая и в один кадр не укладывается, то можно выставить перед замером какое-нибудь космическое число тактов в кадре, чтобы счетчик тактов не успевал сбрасываться на нуль.
в унреале достаточно перед тестируемой прогой запретить прерывания, нажать F8 на CALL в эту прогу и увидеть число тактов, сколько она сьела (и пофиг сколько там RET'ов).
что касается неправильных тактов - пруф в студию, очень интересно.
насколько помню одну из ошибок можно было поймать при выполнении HALT в одном из режимов прерываний (толи IM0 толи IM1) - после обработки прерывания счетчик тактов сбивается на 1 такт. Что касается инструкций, то это были какие-то префиксированные инструкции,помоемому FDCB, но точно не помню.