SlideShare una empresa de Scribd logo
1 de 16
Descargar para leer sin conexión
Gustavo Dávila 2012
 El lenguaje Assembly: Es un tipo de lenguaje
de bajo nivel utilizado para escribir
programas informáticos, y constituye la
representación más directa del código
máquina específico para cada arquitectura de
computadoras legible por un programador.
 org 100h
 ; set video mode
 mov ax, 3 ; text mode 80x25, 16 colors, 8 pages (ah=0, al=3)
 int 10h ; do it!
 ; cancel blinking and enable all 16 colors:
 mov ax, 1003h
 mov bx, 0
 int 10h
 ; set segment register:
 mov ax, 0b800h
 mov ds, ax
 El término ensamblador se refiere a un tipo
de programa informático que se encarga de
traducir un archivo fuente escrito en un
lenguaje Assembly, a un archivo objeto que
contiene código máquina, ejecutable
directamente por la máquina para la que se
ha generado.
 Ejemplos: MASM
 TASM
 Lenguaje Assembly (archivo fuente)
 Código Maquina (archivo objeto)
La tarea fundamental de un ensamblador es traducir
un programa en lenguaje de assembly al código
correspondiente en lenguaje de máquina.
 El programa ensamblador lee el archivo
escrito en lenguaje Assembly y sustituye cada
uno de los códigos nemotécnicos que
aparecen por su código de operación
correspondiente en sistema binario para la
plataforma que se eligió como destino en las
opciones específicas del ensamblador.
 Para realizar la tarea de traducción se apoya
en unas tablas “equivalencia” y “Símbolos”
Convert assembly language file (.asm)
into an executable file (.obj).
First Pass:
• scan program file
• find all labels and calculate the corresponding addresses;
this is called the symbol table
Second Pass:
• convert instructions to machine language,
using information from symbol table
 Es una estructura en la cual se realizan varias
operaciones tales como: insertar, borrar y buscar la
información sobre los símbolos (aquellos elementos que
no están presentes en la tabla de equivalencia) que van
apareciendo a lo largo del programa, Por ejemplo: los
identificadores (variables y funciones), etiquetas,
definidos por el usuario.
 Alguno de los campos presente en la tabla de símbolos
tenemos:
 Tipo de dato
 Dirección de memoria
 Segmento al que pertenece
 A cada una de las partes de una linea de código en ensamblador se le
conoce como token, por ejemplo en la linea de código
 MOV AX,Var
 tenemos tres tokens, la instrucción MOV, el operando AX, y el operando
VAR. El ensamblador lo que hace para generar el código OBJ es leer cada
uno de los tokens y buscarlo en una tabla interna de "equivalencias"
conocida como tabla de palabras reservadas, que es donde se
encuentran todos los significados de los mnemónicos que utilizamos
como instrucciones.
 Siguiendo este proceso, el ensamblador lee MOV, lo busca en su tabla y
al encontrarlo lo identifica como una instrucción del procesador, así
mismo lee AX y lo reconoce como un registro del procesador, pero al
momento de buscar el token Var en la tabla de palabras reservadas no lo
encuentra y entonces lo busca en la tabla de símbolos que es una tabla
donde se encuentran los nombres de las variables, constantes y
etiquetas utilizadas en el programa donde se incluye su dirección en
memoria y el tipo de datos que contiene.
 < THE SYMBOL TABLE > trigonometrico.exe --
 ======================================================
 Name Offset Size Type Segment
 ======================================================
 MENUT 00000 1 VAR data
 CADENA42 0050A 1 VAR data
 CADENA43 0052C 1 VAR data
 PDESF2 00778 2 VAR data
 CODE 00088 -5 SEGMENT (ITSELF)
 INICIO 00000 -1 LABEL code
 MENU 00005 -1 LABEL code
 TRIANGULO 00055 -1 LABEL code
 ESFERA 007C1 -1 LABEL code
 SALIRPROGRAMA 0091E -1 LABEL code
 =====================================================
• Cuando el programador invoca al ensamblador, dicho
programa detecta e informa si encontró o no errores
en la fase traducción. Por otra parte, en caso
encontrar errores, el ensamblador, debe generar
mensajes significativos para orientar al programado
donde esta dicho error y así pueda ser solventado:
Parte de las actividades del gestor son:
• Detectar errores léxicos (ortográficos)
• Detectar errores sintácticos (construcciones incorrectas)
• Detectar errores semánticos (p. ej. uso de variables no
declaradas, errores de tipo, etc).
 ENSAMBLADORES DE UNA FASE: leen una línea y
la traducen directamente para producir una
instrucción de lenguaje maquina o la ejecuta si se
trata de una pseudo instrucción. Se construye la
tabla de símbolos a medida que aparecen las
definiciones de variables, etiquetas, etc.
 ENSAMBLADORES DE DOS FASES: Realiza la
traducción en dos etapas: 1° fase leen el
programa fuente y construyen la tabla de
símbolos, 2° fase vuelve a leer el programa fuente
y pueden ir traduciendo totalmente pues
reconocen la totalidad de los símbolos.
 La diferencia entre los ensambladores radica en
la forma de generar el código y en las directivas
con que cuente, aunque estas diferencias son
mínimas. El código Assembly no cambia puesto
que los microprocesadores con los que se va a
trabajar son comunes. Así, todos los programas
que se creen con un ensamblador en particular
podrán ser ensamblados en otro, cambiando las
pseudo-operaciones no reconocidas por el
equivalente indicado en el manual de referencia
del paquete empleado.
 El propósito para el que se crearon este tipo de
aplicaciones es la de facilitar la escritura de
programas, ya que escribir directamente en
código binario, que es el único código entendible
por la computadora, es en la práctica imposible.
 La evolución de los lenguajes de programación a
partir del lenguaje Assembly originó también la
evolución de este programa ensamblador hacia
lo que se conoce como programa compilador.

Más contenido relacionado

La actualidad más candente

Registros de control y estados de la CPU
Registros de control y estados de la CPURegistros de control y estados de la CPU
Registros de control y estados de la CPU
Ivan Porras
 
Manipulacion de la pila!!
Manipulacion de la pila!!Manipulacion de la pila!!
Manipulacion de la pila!!
romo91
 
Interrupciones
InterrupcionesInterrupciones
Interrupciones
handresrm
 
Clasificasion de lenguajes
Clasificasion de lenguajesClasificasion de lenguajes
Clasificasion de lenguajes
Alex Javier
 

La actualidad más candente (20)

Modelo y transicion
Modelo y transicionModelo y transicion
Modelo y transicion
 
Lenguaje ensamblador
Lenguaje ensambladorLenguaje ensamblador
Lenguaje ensamblador
 
Herramientas bind
Herramientas bindHerramientas bind
Herramientas bind
 
Arquitectura de computadoras
Arquitectura de computadorasArquitectura de computadoras
Arquitectura de computadoras
 
Estilos de programación y sus lenguajes
Estilos de programación y sus lenguajesEstilos de programación y sus lenguajes
Estilos de programación y sus lenguajes
 
Traductor y su estructura
Traductor y su estructuraTraductor y su estructura
Traductor y su estructura
 
Modelos de arquitecturas de computadoras
Modelos de arquitecturas de computadorasModelos de arquitecturas de computadoras
Modelos de arquitecturas de computadoras
 
Capas de la ingenieria de software
Capas de la ingenieria de softwareCapas de la ingenieria de software
Capas de la ingenieria de software
 
Segmetación de instrucciones
Segmetación de instruccionesSegmetación de instrucciones
Segmetación de instrucciones
 
Arquitectura del procesador
Arquitectura del procesadorArquitectura del procesador
Arquitectura del procesador
 
Estructura de lenguaje ensamblador
Estructura de lenguaje ensambladorEstructura de lenguaje ensamblador
Estructura de lenguaje ensamblador
 
Modelos de arquitecturas de computo
Modelos de arquitecturas de computoModelos de arquitecturas de computo
Modelos de arquitecturas de computo
 
Registros de control y estados de la CPU
Registros de control y estados de la CPURegistros de control y estados de la CPU
Registros de control y estados de la CPU
 
Manipulacion de la pila!!
Manipulacion de la pila!!Manipulacion de la pila!!
Manipulacion de la pila!!
 
Arquitectura harvard
Arquitectura harvardArquitectura harvard
Arquitectura harvard
 
Lenguaje Ensamblador
Lenguaje EnsambladorLenguaje Ensamblador
Lenguaje Ensamblador
 
Sistemas Operativos
Sistemas OperativosSistemas Operativos
Sistemas Operativos
 
Interrupciones
InterrupcionesInterrupciones
Interrupciones
 
Clasificasion de lenguajes
Clasificasion de lenguajesClasificasion de lenguajes
Clasificasion de lenguajes
 
Programación estructurada
Programación estructuradaProgramación estructurada
Programación estructurada
 

Similar a Unidad 3 ensambladores

Programacion Lenguaje Assembler 25 10 07
Programacion Lenguaje Assembler 25 10 07Programacion Lenguaje Assembler 25 10 07
Programacion Lenguaje Assembler 25 10 07
Carlos Pastorino
 
Exposición ted
Exposición tedExposición ted
Exposición ted
COVAEV
 
Estructura de un compilador 2
Estructura de un compilador 2Estructura de un compilador 2
Estructura de un compilador 2
perlallamas
 
Grupo 1 proceso de lenguajes i
Grupo 1 proceso de lenguajes iGrupo 1 proceso de lenguajes i
Grupo 1 proceso de lenguajes i
Rossana Sosa
 
Actividad26
Actividad26Actividad26
Actividad26
grachika
 
Compiladores
CompiladoresCompiladores
Compiladores
dianajim
 

Similar a Unidad 3 ensambladores (20)

Jin Unidad6
Jin Unidad6Jin Unidad6
Jin Unidad6
 
Programacion Lenguaje Assembler 25 10 07
Programacion Lenguaje Assembler 25 10 07Programacion Lenguaje Assembler 25 10 07
Programacion Lenguaje Assembler 25 10 07
 
Mipag web
Mipag webMipag web
Mipag web
 
Evolucion de los compiladores1
Evolucion de los compiladores1Evolucion de los compiladores1
Evolucion de los compiladores1
 
Compiladores
CompiladoresCompiladores
Compiladores
 
Compiladores
CompiladoresCompiladores
Compiladores
 
Resumencap1 carmen vargas_jeremycamacho
Resumencap1 carmen vargas_jeremycamachoResumencap1 carmen vargas_jeremycamacho
Resumencap1 carmen vargas_jeremycamacho
 
Exposición ted
Exposición tedExposición ted
Exposición ted
 
Introduccion
IntroduccionIntroduccion
Introduccion
 
Estructura de un compilador 2
Estructura de un compilador 2Estructura de un compilador 2
Estructura de un compilador 2
 
Grupo 1 proceso de lenguajes i
Grupo 1 proceso de lenguajes iGrupo 1 proceso de lenguajes i
Grupo 1 proceso de lenguajes i
 
Actividad26
Actividad26Actividad26
Actividad26
 
Clase10 2-lenguaje ensamblador
Clase10 2-lenguaje ensambladorClase10 2-lenguaje ensamblador
Clase10 2-lenguaje ensamblador
 
Presentación1.pptx
Presentación1.pptxPresentación1.pptx
Presentación1.pptx
 
Introduccion al assembler
Introduccion al assemblerIntroduccion al assembler
Introduccion al assembler
 
Introduccion al assembler[1]
Introduccion al assembler[1]Introduccion al assembler[1]
Introduccion al assembler[1]
 
Compiladores
CompiladoresCompiladores
Compiladores
 
Curso prog sist
Curso prog sistCurso prog sist
Curso prog sist
 
Compiladores Ex..ppt
Compiladores Ex..pptCompiladores Ex..ppt
Compiladores Ex..ppt
 
Compiladores conceptos
Compiladores conceptosCompiladores conceptos
Compiladores conceptos
 

Más de Gustavo Davila (10)

Enlazadores cargadores-by-gadd
Enlazadores cargadores-by-gaddEnlazadores cargadores-by-gadd
Enlazadores cargadores-by-gadd
 
Recursos educativo abiertos para sistema de computación
Recursos educativo abiertos para sistema de computaciónRecursos educativo abiertos para sistema de computación
Recursos educativo abiertos para sistema de computación
 
Camtasia getting started guide
Camtasia getting started guideCamtasia getting started guide
Camtasia getting started guide
 
Manejo de archivo
Manejo de archivoManejo de archivo
Manejo de archivo
 
Lenguaje ensamblador basico
Lenguaje ensamblador basicoLenguaje ensamblador basico
Lenguaje ensamblador basico
 
Risc y Cisc
Risc y CiscRisc y Cisc
Risc y Cisc
 
Sistema Númerico
Sistema NúmericoSistema Númerico
Sistema Númerico
 
Arquitectura del Computador
Arquitectura del ComputadorArquitectura del Computador
Arquitectura del Computador
 
Bloque pacie-by-gustavo-davila
Bloque pacie-by-gustavo-davilaBloque pacie-by-gustavo-davila
Bloque pacie-by-gustavo-davila
 
Slideshare grupo-i
Slideshare grupo-iSlideshare grupo-i
Slideshare grupo-i
 

Último

Presentación de medicina Enfermedades Fotográfico Moderno Morado (1).pdf
Presentación de medicina Enfermedades Fotográfico Moderno Morado (1).pdfPresentación de medicina Enfermedades Fotográfico Moderno Morado (1).pdf
Presentación de medicina Enfermedades Fotográfico Moderno Morado (1).pdf
juancmendez1405
 

Último (20)

Evaluación de los Factores Internos de la Organización
Evaluación de los Factores Internos de la OrganizaciónEvaluación de los Factores Internos de la Organización
Evaluación de los Factores Internos de la Organización
 
Proceso de gestión de obras - Aquí tu Remodelación
Proceso de gestión de obras - Aquí tu RemodelaciónProceso de gestión de obras - Aquí tu Remodelación
Proceso de gestión de obras - Aquí tu Remodelación
 
Cerebelo Anatomía y fisiología Clase presencial
Cerebelo Anatomía y fisiología Clase presencialCerebelo Anatomía y fisiología Clase presencial
Cerebelo Anatomía y fisiología Clase presencial
 
ESTEREOTIPOS Y ROLES DE GÉNERO (labor de grupo)
ESTEREOTIPOS  Y ROLES DE GÉNERO (labor de grupo)ESTEREOTIPOS  Y ROLES DE GÉNERO (labor de grupo)
ESTEREOTIPOS Y ROLES DE GÉNERO (labor de grupo)
 
Lección 1: Los complementos del Verbo ...
Lección 1: Los complementos del Verbo ...Lección 1: Los complementos del Verbo ...
Lección 1: Los complementos del Verbo ...
 
Tipologías de vínculos afectivos (grupo)
Tipologías de vínculos afectivos (grupo)Tipologías de vínculos afectivos (grupo)
Tipologías de vínculos afectivos (grupo)
 
RubénSaaRamos_PrácticasPedagogía_Educación y Sociedad
RubénSaaRamos_PrácticasPedagogía_Educación y SociedadRubénSaaRamos_PrácticasPedagogía_Educación y Sociedad
RubénSaaRamos_PrácticasPedagogía_Educación y Sociedad
 
TERCER GRADO PROGRAMACION ANUAL CCSS 3° - 2024.docx
TERCER GRADO PROGRAMACION ANUAL CCSS 3° - 2024.docxTERCER GRADO PROGRAMACION ANUAL CCSS 3° - 2024.docx
TERCER GRADO PROGRAMACION ANUAL CCSS 3° - 2024.docx
 
Luz desde el santuario. Escuela Sabática
Luz desde el santuario. Escuela SabáticaLuz desde el santuario. Escuela Sabática
Luz desde el santuario. Escuela Sabática
 
Gran Final Campeonato Nacional Escolar Liga Las Torres 2017.pdf
Gran Final Campeonato Nacional Escolar Liga Las Torres 2017.pdfGran Final Campeonato Nacional Escolar Liga Las Torres 2017.pdf
Gran Final Campeonato Nacional Escolar Liga Las Torres 2017.pdf
 
CONCLUSIONES DESCRIPTIVAS TIC que ayudaran a tus registrosdocx
CONCLUSIONES DESCRIPTIVAS TIC que ayudaran a tus registrosdocxCONCLUSIONES DESCRIPTIVAS TIC que ayudaran a tus registrosdocx
CONCLUSIONES DESCRIPTIVAS TIC que ayudaran a tus registrosdocx
 
La historia de la vida estudiantil a 102 años de la fundación de las Normales...
La historia de la vida estudiantil a 102 años de la fundación de las Normales...La historia de la vida estudiantil a 102 años de la fundación de las Normales...
La historia de la vida estudiantil a 102 años de la fundación de las Normales...
 
PROBLEMAS DE GENÉTICA CON ÁRBOLES GENEALÓGICOS.pdf
PROBLEMAS DE GENÉTICA  CON ÁRBOLES GENEALÓGICOS.pdfPROBLEMAS DE GENÉTICA  CON ÁRBOLES GENEALÓGICOS.pdf
PROBLEMAS DE GENÉTICA CON ÁRBOLES GENEALÓGICOS.pdf
 
LA GEOMETRÍA Y LOS SISTEMAS ANGULARES, APRENDER LEYENDO LA BIBLIA
LA GEOMETRÍA Y LOS SISTEMAS ANGULARES, APRENDER LEYENDO LA BIBLIALA GEOMETRÍA Y LOS SISTEMAS ANGULARES, APRENDER LEYENDO LA BIBLIA
LA GEOMETRÍA Y LOS SISTEMAS ANGULARES, APRENDER LEYENDO LA BIBLIA
 
METODOS DE EXTRACCIÓN E IDENTIFICACIÓN - 2024.pdf
METODOS DE EXTRACCIÓN E IDENTIFICACIÓN - 2024.pdfMETODOS DE EXTRACCIÓN E IDENTIFICACIÓN - 2024.pdf
METODOS DE EXTRACCIÓN E IDENTIFICACIÓN - 2024.pdf
 
Revista Faro Normalista 6, 18 de mayo 2024
Revista Faro Normalista 6, 18 de mayo 2024Revista Faro Normalista 6, 18 de mayo 2024
Revista Faro Normalista 6, 18 de mayo 2024
 
Presentación de medicina Enfermedades Fotográfico Moderno Morado (1).pdf
Presentación de medicina Enfermedades Fotográfico Moderno Morado (1).pdfPresentación de medicina Enfermedades Fotográfico Moderno Morado (1).pdf
Presentación de medicina Enfermedades Fotográfico Moderno Morado (1).pdf
 
RESPONSABILIDAD SOCIAL EN LAS ORGANIZACIONES (4).pdf
RESPONSABILIDAD SOCIAL EN LAS ORGANIZACIONES (4).pdfRESPONSABILIDAD SOCIAL EN LAS ORGANIZACIONES (4).pdf
RESPONSABILIDAD SOCIAL EN LAS ORGANIZACIONES (4).pdf
 
proyecto semana de los Jardines, actividades a realizar para resaltar esta fecha
proyecto semana de los Jardines, actividades a realizar para resaltar esta fechaproyecto semana de los Jardines, actividades a realizar para resaltar esta fecha
proyecto semana de los Jardines, actividades a realizar para resaltar esta fecha
 
2. Entornos Virtuales de Aprendizaje.pptx
2. Entornos Virtuales de Aprendizaje.pptx2. Entornos Virtuales de Aprendizaje.pptx
2. Entornos Virtuales de Aprendizaje.pptx
 

Unidad 3 ensambladores

  • 2.
  • 3.  El lenguaje Assembly: Es un tipo de lenguaje de bajo nivel utilizado para escribir programas informáticos, y constituye la representación más directa del código máquina específico para cada arquitectura de computadoras legible por un programador.
  • 4.  org 100h  ; set video mode  mov ax, 3 ; text mode 80x25, 16 colors, 8 pages (ah=0, al=3)  int 10h ; do it!  ; cancel blinking and enable all 16 colors:  mov ax, 1003h  mov bx, 0  int 10h  ; set segment register:  mov ax, 0b800h  mov ds, ax
  • 5.  El término ensamblador se refiere a un tipo de programa informático que se encarga de traducir un archivo fuente escrito en un lenguaje Assembly, a un archivo objeto que contiene código máquina, ejecutable directamente por la máquina para la que se ha generado.  Ejemplos: MASM  TASM
  • 6.  Lenguaje Assembly (archivo fuente)  Código Maquina (archivo objeto) La tarea fundamental de un ensamblador es traducir un programa en lenguaje de assembly al código correspondiente en lenguaje de máquina.
  • 7.  El programa ensamblador lee el archivo escrito en lenguaje Assembly y sustituye cada uno de los códigos nemotécnicos que aparecen por su código de operación correspondiente en sistema binario para la plataforma que se eligió como destino en las opciones específicas del ensamblador.  Para realizar la tarea de traducción se apoya en unas tablas “equivalencia” y “Símbolos”
  • 8. Convert assembly language file (.asm) into an executable file (.obj). First Pass: • scan program file • find all labels and calculate the corresponding addresses; this is called the symbol table Second Pass: • convert instructions to machine language, using information from symbol table
  • 9.  Es una estructura en la cual se realizan varias operaciones tales como: insertar, borrar y buscar la información sobre los símbolos (aquellos elementos que no están presentes en la tabla de equivalencia) que van apareciendo a lo largo del programa, Por ejemplo: los identificadores (variables y funciones), etiquetas, definidos por el usuario.  Alguno de los campos presente en la tabla de símbolos tenemos:  Tipo de dato  Dirección de memoria  Segmento al que pertenece
  • 10.  A cada una de las partes de una linea de código en ensamblador se le conoce como token, por ejemplo en la linea de código  MOV AX,Var  tenemos tres tokens, la instrucción MOV, el operando AX, y el operando VAR. El ensamblador lo que hace para generar el código OBJ es leer cada uno de los tokens y buscarlo en una tabla interna de "equivalencias" conocida como tabla de palabras reservadas, que es donde se encuentran todos los significados de los mnemónicos que utilizamos como instrucciones.  Siguiendo este proceso, el ensamblador lee MOV, lo busca en su tabla y al encontrarlo lo identifica como una instrucción del procesador, así mismo lee AX y lo reconoce como un registro del procesador, pero al momento de buscar el token Var en la tabla de palabras reservadas no lo encuentra y entonces lo busca en la tabla de símbolos que es una tabla donde se encuentran los nombres de las variables, constantes y etiquetas utilizadas en el programa donde se incluye su dirección en memoria y el tipo de datos que contiene.
  • 11.  < THE SYMBOL TABLE > trigonometrico.exe --  ======================================================  Name Offset Size Type Segment  ======================================================  MENUT 00000 1 VAR data  CADENA42 0050A 1 VAR data  CADENA43 0052C 1 VAR data  PDESF2 00778 2 VAR data  CODE 00088 -5 SEGMENT (ITSELF)  INICIO 00000 -1 LABEL code  MENU 00005 -1 LABEL code  TRIANGULO 00055 -1 LABEL code  ESFERA 007C1 -1 LABEL code  SALIRPROGRAMA 0091E -1 LABEL code  =====================================================
  • 12. • Cuando el programador invoca al ensamblador, dicho programa detecta e informa si encontró o no errores en la fase traducción. Por otra parte, en caso encontrar errores, el ensamblador, debe generar mensajes significativos para orientar al programado donde esta dicho error y así pueda ser solventado: Parte de las actividades del gestor son: • Detectar errores léxicos (ortográficos) • Detectar errores sintácticos (construcciones incorrectas) • Detectar errores semánticos (p. ej. uso de variables no declaradas, errores de tipo, etc).
  • 13.  ENSAMBLADORES DE UNA FASE: leen una línea y la traducen directamente para producir una instrucción de lenguaje maquina o la ejecuta si se trata de una pseudo instrucción. Se construye la tabla de símbolos a medida que aparecen las definiciones de variables, etiquetas, etc.  ENSAMBLADORES DE DOS FASES: Realiza la traducción en dos etapas: 1° fase leen el programa fuente y construyen la tabla de símbolos, 2° fase vuelve a leer el programa fuente y pueden ir traduciendo totalmente pues reconocen la totalidad de los símbolos.
  • 14.
  • 15.  La diferencia entre los ensambladores radica en la forma de generar el código y en las directivas con que cuente, aunque estas diferencias son mínimas. El código Assembly no cambia puesto que los microprocesadores con los que se va a trabajar son comunes. Así, todos los programas que se creen con un ensamblador en particular podrán ser ensamblados en otro, cambiando las pseudo-operaciones no reconocidas por el equivalente indicado en el manual de referencia del paquete empleado.
  • 16.  El propósito para el que se crearon este tipo de aplicaciones es la de facilitar la escritura de programas, ya que escribir directamente en código binario, que es el único código entendible por la computadora, es en la práctica imposible.  La evolución de los lenguajes de programación a partir del lenguaje Assembly originó también la evolución de este programa ensamblador hacia lo que se conoce como programa compilador.