Existe alguma maneira de ver o que minha CPU está fazendo no “nível de montagem”?

3

Eu estava olhando como o Assembly Language funciona, porque eu quero aprender como as coisas complexas e extravagantes que o meu computador faz realmente acontecem nos níveis de registro / hardware da CPU. Existe alguma maneira de ver o que está acontecendo durante o uso normal do computador?

Eu quero aprender como, que tipo de coisas entram e saem dos vários registros, enquanto eu digo, navegando na internet ou jogando um jogo, etc. Mesmo que eu pudesse assistir isso eu não tenho certeza de como eu poderia correlacioná-lo a cálculos específicos que eu possa ver acontecendo em um nível mais alto. Ou seja, não sei como saberia se esse código hexadecimal que entra neste registro no momento está relacionado ao processamento do Firefox com criptografia SSL, etc.

    
por BigOmega 14.09.2012 / 19:52

2 respostas

5

Você percebe que esses processadores rodam a 3GHz ou mais - se você quer rodar em tempo real, não há como o seu cérebro (ou meu) insignificante poder acompanhar.

E um pequeno problema: você não olha para o montador na CPU, você tira algumas informações e vai direto para o código da máquina. Não há "branch para a rotina de impressão", será "branch para o local 227015ED42AB12F2 ou qualquer outra coisa. Você terá que lembrar o que esse local faz. Novamente, sobrecarregar sua rede neural. Você terá que" inverter montar "o que é fazendo sentido, muito difícil.

Dito isto, você tem algumas opções que não fazem exatamente o que você quer.

1) Obtenha um depurador, execute seu programa no depurador. Eles geralmente mostram código de máquina / assembly (eles usam os símbolos C como um assembler faria). Isso mostrará algumas informações, mas lembre-se de que até mesmo um programa simples pode ter milhões, talvez bilhões de instruções. No momento em que você chegar ao código da máquina, o código-fonte foi compilado, otimizado e vinculado às bibliotecas do sistema. Isso será difícil.

2) Procure por simuladores. Estes mostrarão um subconjunto de código e serão executados mais lentamente, algo que você pode acompanhar. Eu tinha um C64 e um Atari 800 e joguei com o Apples, então o Virtual 6502 parece divertido para mim.

Id também sugere, se você quiser ver os algoritmos, ver a execução do código-fonte, não o código da máquina, é provavelmente o nível que você deseja tentar.

    
por 14.09.2012 / 20:03
3

Você pode percorrer um programa individual com depurador, uma instrução de cada vez, examinando o conteúdo do registro, mas isso não será significativo, a menos que seja um programa que você tenha escrito ou entendido muito bem. Para observar tudo o que uma máquina está fazendo, você precisa de duas máquinas, uma executando um depurador de kernel contra a outra. Mas também é improvável que isso seja significativo ou prático para a maioria dos usuários.

    
por 14.09.2012 / 19:57