Procesadores de Lenguajes de Programación: Preprocesadores, Ensambladores y Cargadores

Enviado por Programa Chuletas y clasificado en Informática y Telecomunicaciones

Escrito el en español con un tamaño de 5,33 KB

En el proceso de desarrollo de software, varios componentes trabajan en conjunto para transformar el código fuente escrito por los programadores en código ejecutable por la máquina. Estos componentes clave son el preprocesador, el ensamblador y el cargador. A continuación, se detalla la función de cada uno:

Preprocesador

El preprocesador es el primer paso en el proceso de compilación. Su función principal es preparar el código fuente para las etapas posteriores. Algunos editores de código como Word o Texpad pueden funcionar como preprocesadores.

  • Función: Prepara la entrada para el proceso de compilación.
  • Editores: Manejan macros (conjunto de acciones pregrabadas asociadas a una instrucción/comando). Muchas de las palabras del lenguaje son macros.
  • Ejecución: Se ejecuta antes del análisis léxico, previo al proceso de compilación.
  • Entorno: Es el entorno o ambiente donde se crea el programa fuente.
  • Tabla de Símbolos: Posee una tabla de símbolos donde se almacenan las palabras reservadas para ese lenguaje de programación.
  • Lenguaje Propio: Cada preprocesador puede manejar un lenguaje propio.
  • Nivel de Lenguaje: Maneja un lenguaje de alto nivel, ya que las instrucciones que generamos solo son entendibles por la máquina.
  • Inclusión de Archivos: Permite la inclusión de archivos, como librerías y paquetes.
  • Extensiones: Permite extensiones a lenguajes, haciendo uso de palabras que no están reservadas en su lenguaje.
  • Detección de Errores: Detecta errores comparando palabra a palabra con respecto a lo que está en el diccionario, detecta errores de sintaxis y muestra sugerencias.
  • Preprocesadores Racionales: Generan sugerencias de cómo corregir errores al momento de la edición del código.
  • Comentarios: Permite separar los comentarios del código del programa.
  • Optimización: Optimiza el código, lo cual requiere pasar por todas las características anteriores.

Ensamblador

El ensamblador es el traductor que convierte el código intermedio generado por el preprocesador en código de máquina, que es directamente ejecutable por la CPU.

  • Función: Traduce el código intermedio al código de máquina.
  • Entrada: Lee el código intermedio como entrada para su posterior traducción.
  • Cálculo de Posiciones de Memoria: Calcula las posiciones de memoria donde la instrucción se va a ejecutar al traducir el código intermedio a código hexadecimal (característica más importante).
  • Traducción: Traduce el código intermedio a código hexadecimal y éste a código binario.
  • Nemónicos: Usa nemónicos / notación nemotécnica o equivalentes de un lenguaje a otro.
  • Tipos: Pueden ser de una o dos pasadas. Los de una pasada traducen directamente a lenguaje máquina. Los de dos pasadas traducen en la primera a código hexadecimal y en la segunda a código de máquina.
  • Dependencia: Depende de la arquitectura del computador, porque se encuentra integrado dentro de él, es decir, dependen de la versión del procesador (ej. 8080, 8086, 8088, Pentium).
  • Nivel de Lenguaje: Utiliza lenguaje de bajo nivel.
  • Tabla de Símbolos: Posee su propia tabla de símbolos en lenguaje ensamblador.
  • Detección de Errores: Puede detectar errores de sintaxis y de posiciones de memoria (cuando la posición de memoria está ocupada por otro proceso).
  • Posiciones de Memoria: Trabaja con posiciones de memoria relocalizables: origen y destino.

Cargador

El cargador es el componente del sistema operativo responsable de cargar los programas ejecutables en la memoria principal para que puedan ser ejecutados.

  • Función: Es el programa que lanza y ejecuta todo ejecutable o aplicación. Carga los programas en la memoria desde los ejecutables.
  • Componente: Es parte del núcleo de cualquier software base.
  • Carga: Es cargado al iniciar el software.
  • Persistencia: Permanece activo hasta que se apaga o se reinicia el software.
  • Intercambio de Memoria: Algunos cargadores efectúan intercambios de memoria.
  • Administración de Memoria: Administran las posiciones de memoria que fueron calculadas por el ensamblador.
  • Incorporación de Librerías: Incorpora librerías necesarias.
  • Funciones: Tiene dos funciones: enlace y carga.
  • Liberación de Memoria: Es el que libera y limpia la memoria a través de un proceso llamado paginación.
  • Administración de Posiciones: Administra las posiciones de memoria que fueron calculadas por el ensamblador y las posiciones relocalizables (origen y destino).
  • Residencia en Memoria: Siempre está residente en memoria (porque es cargado al iniciar el programa).

Entradas relacionadas: