O que é um registro de instruções?
Em termos de hardware de computador, um registro de instruções é um elemento na unidade central de processamento (CPU) de um computador ou outro dispositivo que contém as instruções de programação que serão executadas no início do próximo ciclo de clock, conforme determinado por outras partes do CPU. Outros elementos da CPU, como o decodificador de instruções, contam com o registro de instruções para armazenar essas informações, para que possam ser decodificadas, resolvidas e eventualmente executadas. Com alguns tipos de arquitetura de microprocessador, pode haver mais de um registro de instruções para que várias instruções possam ser processadas ao mesmo tempo, formando um estilo de lógica de linha de montagem que é conhecido como pipeline. Geralmente, novas instruções são fornecidas ao registro de instruções através de outra parte da CPU conhecida como contador de programa, que serve a um propósito muito semelhante, mas pode avançar para a próxima instrução enquanto as informações que o registro de instruções está armazenado são executadas.
Um registro é uma série de comutadores físicos em um microprocessador ou placa de circuito que podem ser ligados ou desligados, tornando cada comutador equivalente a um bit. Quando vários comutadores, também chamados de trincos, são vinculados, eles podem armazenar dados binários, como números, que podem ser transformados em endereços de memória ou códigos de instruções. Dentro da CPU, o registro de instruções pode conter o endereço na memória do computador da instrução que está sendo executada ou, para maior eficiência, pode conter a própria instrução. Esta informação é passada para o registrador através de outro registrador conhecido como contador de programa, que na maioria dos casos avança para a próxima instrução a ser executada após a transmissão da instrução atual.
Os tipos de instruções processadas pelos registradores geralmente são comandos de linguagem assembly de baixo nível que eventualmente são traduzidos em código de máquina ou código de bytes. Elas são distintamente diferentes das instruções nas linguagens de programação de nível superior, porque as instruções de montagem operam em uma escala direta muito pequena. Um exemplo é uma linha de código de alto nível que adiciona dois números e armazena os resultados em uma variável, que exige apenas uma única linha de código de alto nível para expressar. Quando o código é compilado, uma dúzia ou mais de instruções podem ser geradas para concluir a tarefa, sendo cada instrução algo simples, como a troca de valores entre a RAM (memória de acesso aleatório do computador) e um registro de utilidade.
Depois que uma instrução é referenciada pelo registro de instruções, ela é passada para o decodificador de instruções para que a instrução possa ser convertida em código de máquina. As referências a locais de memória que podem conter variáveis ou outras informações são resolvidas e essas informações são colocadas em outros registros. Finalmente, a instrução real será executada. Durante esse período, o contador do programa será incrementado pela CPU para apontar para a próxima instrução que será mantida pelo registro de instruções, para que o processo possa se repetir até que todo o programa seja executado.