Pass1 e Pass2 são duas passagens de um assembler de duas passagens, um programa de computador usado em software de sistemas para traduzir a linguagem assembly em código de máquina. Aqui está uma comparação e contraste entre os dois:
1. Objetivo: -
Pass1 (geração de tabela de símbolos): O objetivo do Pass1 é varrer todo o programa assembly e criar uma tabela de símbolos, que contém os endereços e atributos (tipo, escopo) de todos os símbolos (por exemplo, variáveis, rótulos) definidos no programa.
-
Pass2 (geração de código): O objetivo do Pass2 é realmente gerar as instruções de código de máquina com base na tabela de símbolos criada no Pass1 e nas instruções especificadas no programa assembly.
2. Funções desempenhadas: -
Pass1: - Lê e analisa cada instrução do programa assembly linha por linha.
- Identifica e armazena símbolos na tabela de símbolos.
- Atribui endereços de memória a cada símbolo.
- Realiza análises sintáticas e lexicais, detectando erros de sintaxe ou símbolos indefinidos.
-
Pass2: - Utiliza a tabela de símbolos gerada por Pass1 para resolver referências simbólicas.
- Gera as instruções reais de código de máquina correspondentes a cada instrução de montagem.
- Executa a verificação final de erros para verificar se todos os símbolos foram definidos e usados corretamente.
3. Saída: -
Pass1: A saída do Pass1 é a tabela de símbolos, que é usada pelo Pass2 para geração de código.
-
Pass2: A saída do Pass2 é o programa executável em código de máquina. Este programa pode ser carregado diretamente na memória e executado pela CPU.
Em resumo, Pass1 de um montador de software de sistema concentra-se na criação da tabela de símbolos e na análise de erros no programa de montagem, enquanto Pass2 usa essa tabela de símbolos para gerar as instruções de código de máquina correspondentes e produzir o programa executável final.