1. Propósito:
- Pass1 (Generación de tabla de símbolos): El propósito de Pass1 es escanear todo el programa de ensamblaje y crear una tabla de símbolos, que contiene las direcciones y atributos (tipo, alcance) de todos los símbolos (por ejemplo, variables, etiquetas) definidos en el programa.
- Pass2 (Generación de Código): El propósito de Pass2 es generar las instrucciones de código de máquina basadas en la tabla de símbolos creada en Pass1 y las instrucciones especificadas en el programa ensamblador.
2. Funciones realizadas:
- Pase1:
- Lee y analiza cada declaración del programa de montaje línea por línea.
- Identifica y almacena símbolos en la tabla de símbolos.
- Asigna direcciones de memoria a cada símbolo.
- Realiza análisis sintácticos y léxicos, detectando errores de sintaxis o símbolos indefinidos.
- Pase2:
- Utiliza la tabla de símbolos generada por Pass1 para resolver referencias simbólicas.
- Genera las instrucciones reales en código máquina correspondientes a cada instrucción ensambladora.
- Realiza una verificación final de errores para verificar que todos los símbolos se hayan definido y utilizado correctamente.
3. Salida:
- Pase1: La salida de Pass1 es la tabla de símbolos, que Pass2 utiliza para generar código.
- Pase2: La salida de Pass2 es el programa de código de máquina ejecutable. Este programa puede cargarse directamente en la memoria y ejecutarse mediante la CPU.
En resumen, Pass1 de un ensamblador de software de sistema se enfoca en crear la tabla de símbolos y analizar el programa de ensamblaje en busca de errores, mientras que Pass2 usa esta tabla de símbolos para generar las instrucciones de código de máquina correspondientes y producir el programa ejecutable final.