Arquitetura de Computadores: UC, Instruções e Assembler
Classificado em Computação
Escrito em em
português com um tamanho de 2,95 KB
Questão 6: Decodificação de Instruções e Formatos
Explique de maneira geral como ocorre a decodificação de instruções efetuada pela Unidade de Controle (UC) da CPU. Comente sobre OPcodes e o formato de instruções.
R: Instruções sempre têm um OPcode que indica o que a instrução faz. Pode haver zero, um, dois ou três endereços presentes. Existem quatro formatos comuns de instrução:
- Instrução sem endereço;
- Instrução de um endereço;
- Instrução de dois endereços;
- Instrução de três endereços.
Cada instrução é executada como uma sequência de três fases pela UC:
- Acesso à memória (fetch);
- Decodificação;
- Execução.
A instrução é inicialmente acessada na memória e transferida para o interior da CPU, mais especificamente num registrador especial da unidade de controle chamado de RI (Registrador de Instrução). Uma vez no RI, a instrução é interpretada por um circuito decodificador. Finalmente, ela é executada. A sequência apropriada de sinais é gerada pela unidade de controle, resultando nas transferências de dados e operações apropriadas.
Questão 7: O que é um Montador (Assembler)?
R: O Assembler atua como um tradutor do código escrito na linguagem Assembly para linguagem de máquina, substituindo as instruções e variáveis pelos códigos binários e endereços de memória correspondentes. Os compiladores de várias linguagens de alto nível fazem a compilação dos programas em duas etapas: na primeira, transformam o código-fonte em código Assembly e, em seguida, geram o binário com a ajuda de um Assembler.
Questão 8: Funcionamento de um Montador (Assembler)
Explique como funciona um montador para uma determinada arquitetura.
R: A maioria dos assemblers é de duas passagens:
- Passagem um: Dedicada a montar uma tabela de símbolos para rótulos, literais e identificadores declarados. Os símbolos podem ser mantidos sem ordenação e pesquisados linha por linha, ordenados e pesquisados via busca binária, ou processados por uma operação de hash. O hashing é usualmente o melhor método.
- Passagem dois: Realiza a geração de código.
Algumas pseudo-instruções são executadas na passagem um e outras na passagem dois.
Questão 9: Dependência da Linguagem Assembly
Por que a linguagem Assembly é dependente de arquitetura?
R: Porque os processadores diferem em seus conjuntos de instruções (ISA). Portanto, para cada arquitetura, há uma linguagem de montagem específica que difere no número e tipo de operações suportadas. Além disso, possuem diferentes tamanhos e números de registradores, bem como distintas representações dos tipos de dados armazenados.