Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Asm: Общие вопросы > Аналог RDTSC - нужен счётчик инструкций - как?


Автор: Trotil 11.5.2012, 16:27
RDTSC - Time Stamp Counter, посчитывает такты.
Есть аналогичная инструкция, которая считает инструкции?

Автор: 500mhz 14.5.2012, 10:30
Нету, но есть готовые решения типа 

Цитата

Hacker Disassembler Engine v0.11 by Vjacheslav Patkov
Небольшой дизассемблерный движок, предназначенный для анализа кода. HDE определяет длину команды, префиксы, байты ModR/M и SIB, получает опкод, значения immediate, и др. HDE может пригодится при написании распаковщиков, расшифровщиков исполняемых файлов, когда простого дизассемблера длин мало, а большой дизассемблер тащить тяжело. В дистрибутиве имеется DLL, объектные и заголовочные файлы, а также исходники на ассемблере


Это как один из вариантов, а вообще есть и другие.

Автор: bems 14.5.2012, 15:20
почему не
http://en.wikipedia.org/wiki/Trap_flag
?

Автор: iff 14.5.2012, 16:55
И установить обрабочик прерывания 01h, который увеличивает значение счётчика на 1.

П.С. но прерывание будет считаться как одна команда.

Автор: 500mhz 14.5.2012, 17:53
c трапом хорошо себя отлаживать, а то что хочет сделать ТС лучше всего с дизасмом длин наверно будет работать

Автор: bems 14.5.2012, 18:10
ну если кусок кода без ветвлений...

Автор: iff 14.5.2012, 21:41
Цитата(bems @  14.5.2012,  18:10 Найти цитируемый пост)
ну если кусок кода без ветвлений... 

Как я понял, нужно посчитать сколько инструкций выполнил процессор. Тогда можно и с ветвлениями. Но прерывание в программе будет считаться за одну инструкцию. (Хотя можно конечно усложнить обработчик прерывания 01h, что-бы исправить это)

Автор: bems 14.5.2012, 22:03
iff, ты не понял. Вариант с трассировкой, как ты и говоришь, работает независимо от ветвлений. Но я его и предложил, чего бы я тогда с ним спорил? smile 
А спорил я с вариантом 500mhz. Простым дизассемблером можно мерить только линейные куски

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)