Как определить, какие инструкции выполняются на процессоре?

Как определить, какие инструкции выполняются на процессоре?

Кто-нибудь знает, можно ли определить, какие инструкции процессора выполняются?

Я особенно заинтересован в обнаруженииAES-инструкцииреализовано в последних процессорах Intel и AMD. Возможно ли написать модуль ядра, который обнаруживает эти инструкции? Или конкретные инструкции процессора, которые отправляются в процессор, даже не известны ядру?

решение1

Большую часть времени процессоры выполняют инструкции процессов без участия ядра; ядро ​​должно вмешаться только в том случае, если процесс пользовательского уровня вызывает прерывание, либо пытаясь выполнить недопустимую инструкцию (недопустимую здесь, охватывающую множество причин), либо вызывая программное прерывание. Инструкции AES выполняются напрямую, и ядро ​​не знает, что они выполняются.

Я не думаю, что есть какие-либо связанные счетчики производительности, которые вы могли бы использовать. Инструкции AES имеют необычный шаблон выполнения, которыйможетстатистически идентифицируемо, но я никогда этого не пробовал... И в любом случае это неприменимо в общем случае.

Вы можете попробовать использовать соответствующим образом оснащенный эмулятор, такой какБохс, или анализировать двоичные файлы, чтобы определить инструкции, которые они используют —Debian: какие инструкции используют двоичные файлы x86-64?содержит более подробную информацию о последнем.

Связанный контент