Diferencia entre compilador y ensamblador

Autor: Laura McKinney
Fecha De Creación: 1 Abril 2021
Fecha De Actualización: 11 Mayo 2024
Anonim
04-Compilación e Interpretación
Video: 04-Compilación e Interpretación

Contenido


Compilador y ensamblador desempeña un papel importante en la ejecución de un programa. Algunos compiladores generan directamente el código ejecutable en lugar del código de ensamblaje. El compilador toma el código fuente preprocesado y lo traduce al código ensamblador. El ensamblador toma el código de ensamblaje del compilador y lo traduce al código de máquina reubicable. En este artículo, he discutido las diferencias entre el compilador y el ensamblador con la ayuda del cuadro de comparación que se muestra a continuación, solo eche un vistazo.

  1. Cuadro comparativo
  2. Definición
  3. Diferencias clave
  4. Conclusión

Cuadro comparativo

Bases para la comparaciónCompilador Ensamblador
BASICGenera el código del lenguaje ensamblador o directamente el código ejecutable.Genera el código de máquina reubicable.
EntradaCódigo fuente preprocesado.Código de lenguaje ensamblador.
Fases / PasesLas fases de compilación son analizador léxico, analizador de sintaxis, analizador semántico, generación de código intermedio, optimización de código, generación de código.El ensamblador realiza dos pases sobre la entrada dada.
SalidaEl código de ensamblaje generado por el compilador es una versión mnemónica del código de máquina.El código de máquina reubicable generado por un ensamblador está representado por código binario.


Definición de compilador

los compilador es un programa de computadora que lee el programa escrito en un idioma fuente, lo traduce a un equivalente lenguaje ensamblador y reenvía el código del lenguaje ensamblador a Ensamblador. Mientras que la traducción del código fuente al código ensamblador, el compilador también informa error en el código fuente a su usuario.

Los compiladores también se clasifican como Single-Pass, Multi-Pass, Load-and-Go, depuración y optimización. La clasificación se realiza en función de la función que realiza un compilador y cómo se ha construido. A pesar de estas complejidades, la tarea básica del compilador sigue siendo la misma.

La compilación se realiza en dos partes, parte de análisis y parte de síntesis. los parte de análisis rompe el código fuente en partes constituyentes y forma la representación intermedia del código fuente. los parte de síntesis forma el código objetivo a partir de la representación intermedia.


La compilación se realiza en las siguientes fases:

Analizador léxico, analizador de sintaxis, analizador semántico, generador de código intermedio, optimizador de código, generador de código, tabla de símbolos y controlador de errores.

  • los analizador léxico lee los caracteres del código fuente y los agrupa en el flujos de tokens. Cada ficha representa la secuencia lógica de caracteres como palabra clave, identificadores, operadores. La secuencia de caracteres que forma un token se llama lexema.
  • los analizador de sintaxis analiza el token obtenido del analizador léxico y agrupa los tokens en un estructura jerarquica.
  • los analizador semántico comprueba el código fuente para cualquier error semántico.
  • Generador de código intermedio genera el representación intermedia del código fuente
  • los optimizador de código optimiza el código intermedio en un código de máquina de ejecución más rápida.
  • los generador de códigos finalmente genera el código de destino que es un código de máquina reubicable o un código de ensamblaje.
  • los tabla de símbolos es una estructura de datos que contiene el registro para cada identificador en el código fuente.
  • Controlador de errores detecta el error en cada fase y maneja esos errores.

Definición de ensamblador

Algunos compiladores realizan la tarea de ensamblador y generan directamente un código de máquina reubicable en lugar del código de ensamblaje, que luego se pasa directamente al enlazador / cargador. los ensamblador toma como entrada el código de ensamblaje generado por el compilador y lo traduce a código de máquina reubicable.

Veamos cómo el código de máquina es diferente del código de ensamblaje. Código de montaje es el mnemotécnico versión del código de la máquina. Significa que el código de ensamblaje usa nombres para representar operaciones e incluso da nombres a las direcciones de memoria. Por otro lado, el codigo de maquina usos códigos binarios para la representación de operaciones y direcciones de memoria.

Incluso la forma más simple de ensamblador realiza dos pases sobre la entrada. los primer pase detecta todos los identificadores en el código de ensamblaje que indica la ubicación de almacenamiento y almacenarlos en el tabla de símbolos (aparte de la tabla de símbolos de compiladores). los se asigna la ubicación de almacenamiento al identificador que se encuentra en la primera pasada.

En el segundo pase, la entrada se escanea nuevamente, y esta vez código de operación son traducido en una secuencia de bits representando esa operación en el código de máquina. El segundo pase también se traduce identificadores en el direcciones definido en la tabla de símbolos. Así, el segundo pase genera el código de máquina reubicable.

  1. La diferencia clave entre compilador y ensamblador es que el compilador genera código de ensamblaje y algunos compiladores también pueden generar directamente código ejecutable mientras que, el ensamblador genera código de máquina reubicable.
  2. El compilador toma como entrada el código preprocesado generado por preprocesador. Por otro lado, el ensamblador toma código de ensamblaje como entrada
  3. La compilación tiene lugar en dos fases que son fase de análisis y fase de síntesis. En la fase de análisis, la entrada pasa por analizador léxico, analizador de sintaxis, analizador semántico mientras que el análisis de síntesis se realiza a través de generador de código intermedio, optimizador de código, generador de código. Por otro lado, el ensamblador pasa la entrada a través de dos fases. La primera fase detecta los identificadores y les asigna direcciones en la segunda fase, el código de ensamblaje se traduce a código binario.
  4. El código de ensamblaje generado por el compilador es un versión mnemónica de código de máquina. Sin embargo, el código de máquina reubicable generado por el ensamblador es un código binario reubicable.

Conclusión:

Es posible que no se requiera el ensamblador ya que algunos compiladores generan directamente código ejecutable. Si se utiliza el ensamblador, se requiere un vinculador para vincular todas las bibliotecas integradas a las funciones de biblioteca utilizadas en el código fuente.