Профилирование сборки x86
Кто-нибудь знает хороший инструмент, который дал бы мне счетчик выполнения команд x86. Я посмотрел на gcov, но хотел бы взглянуть на другой вариант, который может мне помочь. Моя конечная цель состоит в том, чтобы иметь возможность вызывать эту функцию и давать ей функцию, которую я заинтересован в эмуляции / профилировании, и она будет возвращать количество раз, которое выполнялась каждая сборочная линия. Любые предложения приветствуются:) Спасибо
4 ответа
Если вы ищете инструкции, которые составляют значительный процент времени, и если вы можете запустить их в отладчике, то это будет работать. Он изолирует кодовые точки, которые ответственны за значительное время, будь то инструкции терминала или инструкции вызова функций, даже если они вызывают ввод / вывод.
Инструменты, которые будут делать это: Zoom, если вы работаете в Linux, или LTProf, если вы работаете в Windows.
С другой стороны, если вы ищете измерение времени и подсчет выполнения, вам понадобится что-то еще, например, эмулятор (Valgrind?).
Qemu может помочь, но в любом случае этот вид профилирования разрушит ваш профиль кеша / конвейера и будет бесполезен.
Аналитик кода AMD должен быть в состоянии сделать это, используя выборку на основе инструкций, хотя я не могу вспомнить, дает ли она проценты или простые числа для подсчета выполнения.
Вы можете довольно легко собрать подобную программу в Linux, просто используйте ptrace
в комбинации с objdump
и немного логики, должно быть легко написать в asm
,
Я получил представление о том, как кодировать отладчики.