Профилирование сборки x86

Кто-нибудь знает хороший инструмент, который дал бы мне счетчик выполнения команд x86. Я посмотрел на gcov, но хотел бы взглянуть на другой вариант, который может мне помочь. Моя конечная цель состоит в том, чтобы иметь возможность вызывать эту функцию и давать ей функцию, которую я заинтересован в эмуляции / профилировании, и она будет возвращать количество раз, которое выполнялась каждая сборочная линия. Любые предложения приветствуются:) Спасибо

4 ответа

Решение

Если вы ищете инструкции, которые составляют значительный процент времени, и если вы можете запустить их в отладчике, то это будет работать. Он изолирует кодовые точки, которые ответственны за значительное время, будь то инструкции терминала или инструкции вызова функций, даже если они вызывают ввод / вывод.

Инструменты, которые будут делать это: Zoom, если вы работаете в Linux, или LTProf, если вы работаете в Windows.

С другой стороны, если вы ищете измерение времени и подсчет выполнения, вам понадобится что-то еще, например, эмулятор (Valgrind?).

Qemu может помочь, но в любом случае этот вид профилирования разрушит ваш профиль кеша / конвейера и будет бесполезен.

Аналитик кода AMD должен быть в состоянии сделать это, используя выборку на основе инструкций, хотя я не могу вспомнить, дает ли она проценты или простые числа для подсчета выполнения.

Вы можете довольно легко собрать подобную программу в Linux, просто используйте ptraceв комбинации с objdump и немного логики, должно быть легко написать в asm,

Я получил представление о том, как кодировать отладчики.

Другие вопросы по тегам