Como posso detectar quais instruções são executadas em uma CPU?

0

Alguém sabe que posso detectar quais instruções da CPU estão sendo executadas?

Estou especialmente interessado em detectar instruções AES implementadas pelos processadores Intel e AMD recentes. Seria f.e. ser possível escrever um módulo do kernel que detecta essas instruções? Ou as instruções específicas da CPU que são enviadas para a CPU nem são conhecidas pelo kernel?

    
por arne.z 30.04.2017 / 13:19

1 resposta

3

Na maioria das vezes, as CPUs executam as instruções dos processos sem envolver o kernel; o kernel só tem que entrar se um processo no nível do usuário causar uma armadilha, seja tentando executar uma instrução inválida (inválida aqui cobrindo uma variedade de razões) ou invocando uma interrupção de software. As instruções do AES são executadas diretamente e o kernel não sabe que elas estão sendo executadas.

Eu não acho que haja algum contador de desempenho relacionado que você possa usar também. As instruções do AES têm um padrão de execução incomum que pode ser identificável estatisticamente, mas eu nunca tentei isso ... E isso geralmente não é aplicável.

Você pode tentar usar um emulador devidamente instrumentado, como Bochs , ou analisar binários para determinar as instruções que eles usam - Debian: que instruções os binários x86-64 usam? tem mais informações sobre o último.

    
por 30.04.2017 / 14:13