SlideShare una empresa de Scribd logo
1 de 16
ARQUITECTURAS DE
         ORDENADORES Y
      COMPILADORES CRUZADOS

                                    PUCESI
                       ESCUELA DE INGENIERIA EN SISTEMAS




COMPILADORES; ING. DIEGO BAROJA; 5TO INGENIERÍA
ARQUITECTURAS DE ORDENADORES

En la disciplina de Procesadores de Lenguaje los compiladores
ocupan una posición privilegiada, dado que son las
herramientas más utilizadas por los profesionales de la
Informática para el desarrollo de aplicaciones. En el caso
particular del desarrollo de compiladores es necesario tener
definidos tres pilares básicos:

 La definición léxica, sintáctica y semántica del lenguaje
  fuente a compilar.
 La estructura interna del compilador
 La arquitectura del ordenador y su repertorio           de
  instrucciones que constituirá el lenguaje objeto
COMPILADORES; ING. DIEGO BAROJA; 5TO
INGENIERÍA
ARQUITECTURAS DE ORDENADORES

Los dos primeros pilares se tratarán en los apartados siguientes, con
el tercer pilar tan sólo trata de resaltarse la relación intima entre las
tecnologías de compilación y las arquitecturas de ordenadores, y los
problemas que plantea la rápida evolución de éstas últimas.
El desarrollo de nuevas arquitecturas de ordenadores que
origina a su vez las correspondientes generaciones de
microprocesadores con sus repertorios de instrucciones
planteándose entre otros estos dos problemas:
• ¿Cómo se pueden ejecutar las aplicaciones desarrolladas
para otras arquitecturas de ordenadores en la nueva
arquitectura?
•     Dado que un compilador es un programa demasiado
complejo para escribirlo directamente en lenguaje máquina
 COMPILADORES; ING. DIEGO BAROJA; 5TO
 INGENIERÍA
ARQUITECTURAS DE ORDENADORES

¿Con qué se escribe el primer compilador?

Las dos cuestiones anteriores están ligadas entre sí, sin
embargo el primer problema planteado no sólo es aplicable a la
construcción de nuevas arquitecturas, también se aparece
cuando es necesaria la compatibilidad de aplicaciones entre
diferentes sistemas operativos y arquitecturas de ordenadores.
Las soluciones habitualmente empleadas para resolver este
problema es el empleo de alguna de las técnicas y herramientas
presentadas en la fig. 10 y que se comentan a continuación.



COMPILADORES; ING. DIEGO BAROJA; 5TO
INGENIERÍA
ARQUITECTURAS DE ORDENADORES

Intérpretes software o emuladores software. Un
intérprete software de código binario es un programa que
lee una a una las instrucciones binarias de la arquitectura
antigua que están en un fichero ejecutable, y las
interpreta. Los intérpretes no son muy rápidos, pero se
pueden construir y adaptar a distintas arquitecturas sin
excesivos costes de desarrollo. Se puede aumentar el
rendimiento de los intérpretes creando una caché que
permita almacenar formas intermedias de instrucciones
que ya se interpretaron previamente.


 COMPILADORES; ING. DIEGO BAROJA; 5TO
 INGENIERÍA
ARQUITECTURAS DE ORDENADORES

Ejemplos comerciales de intérpretes software binario son los
emuladores de DOS para distintos sistemas operativos (por ejemplo
SoftPCÒ de Insignia Solutions). Otro ejemplo son los intérpretes de
la máquina abstracta JVM (Java Virtual Machine) para distintas
plataformas y que permiten ejecutar los códigos binarios
denominados bytecode (ficheros con la extensión .class).

Emuladores hardware. Un emulador hardware trabaja de
forma similar a un intérprete de software, pero está
implementado en hardware de forma que decodifica las
instrucciones de la arquitectura antigua y las traduce a la nueva
arquitectura.

 COMPILADORES; ING. DIEGO BAROJA; 5TO
 INGENIERÍA
ARQUITECTURAS DE ORDENADORES

 Un emulador hardware es mucho más rápido que un intérprete
 software, sin embargo sólo se puede diseñar para una máquina
 específica. Un ejemplo son los microprocesadores Java que
 emulan la máquina abstracta JVM (Java Virtual Machine),
 también denominados por Sun arquitecturas PicoJava.




 COMPILADORES; ING. DIEGO BAROJA; 5TO
 INGENIERÍA
ARQUITECTURAS DE ORDENADORES

 Traductores entre códigos binarios o ensambladores. Son
 conjuntos de instrucciones de la nueva arquitectura que
 reproducen el comportamiento de un programa en la
 arquitectura antigua. Habitualmente, la información de la
 máquina antigua se almacena en registros de la nueva
 máquina. Los programas traducidos a nivel binario o
 ensamblador son más rápidos que los intérpretes software o
 emuladores hardware, pero más lentos que los programas
 construidos con compiladores nativos, que aprovechan al
 máximo la arquitectura de la nueva máquina. Ejemplos de
 traductores binarios son los desarrollados por DEC para
 traducir instrucciones de las arquitecturas VAXÒ y MIPSÒ a
 la nueva arquitectura ALPHAÒ.
 COMPILADORES; ING. DIEGO BAROJA; 5TO
 INGENIERÍA
ARQUITECTURAS DE ORDENADORES

 Compiladores nativos. Los programas fuente antiguos se
 pueden volver a recompilar compiladores desarrollados
 para la nueva arquitectura, aprovechando al máximo sus
 características. Esta es la opción que produce la mejor
 calidad de código objeto en la nueva arquitectura, y por
 consiguiente la mayor velocidad con respecto a las
 opciones comentadas anteriormente. En el siguiente
 apartado se explican los compiladores cruzados, como
 una herramienta para portar compiladores y software
 entre distintas arquitecturas.


 COMPILADORES; ING. DIEGO BAROJA; 5TO
 INGENIERÍA
ARQUITECTURAS DE ORDENADORES

 Otro problema clásico en arquitectura de ordenadores es como
 medir el rendimiento de las diferentes arquitecturas y
 compararlas entre sí [PATT90]. Actualmente las pruebas de
 rendimiento más ampliamente aceptadas son las pruebas
 SPEC, desarrolladas por el organismo System Performance
 Evaluation Corporation y que están especializadas en medir el
 rendimiento en plataformas que utilizan microprocesadores
 diferentes. Una versión de las pruebas data de 1992, y con
 versiones diferentes para operaciones con enteros (SPECint92)
 y para operaciones con punto flotante (SPECfp92) [SHAR94].




 COMPILADORES; ING. DIEGO BAROJA; 5TO
 INGENIERÍA
COMPILADORES CRUZADOS

Uno de los problemas que se plantea es desarrollar los primeros compiladores en
una arquitectura nueva, dado que un compilador es un programa demasiado
complejo para escribirlo directamente en lenguaje máquina.
Sin embargo cuando se trabaja con un nuevo tipo de microprocesador, alguien
tiene que escribir el primer compilador. Otro problema que se plantea es como se
puede ejecutar el código antiguo de otras arquitecturas en la nueva arquitectura.
Sin embargo esta tarea se puede realizar más cómodamente en una máquina
donde ya se dispongan herramientas software, los compiladores cruzados se
encargaran del resto del trabajo.

Se denomina compilador cruzado (en inglés cross-compiler) a un compilador
que se ejecuta en una máquina pero el código objeto es para otra máquina.

Supóngase que se escribe un compilador cruzado para un nuevo lenguaje L,
siendo el lenguaje de implementación S, y el lenguaje objeto es el código de una
máquina N (nueva). Usando una notación en T, se tiene:
COMPILADORES; ING. DIEGO BAROJA; 5TO
INGENIERÍA
COMPILADORES CRUZADOS




Si ya existe un compilador del lenguaje S, que se ejecuta en una máquina
M y genera un código para la máquina M, es decir usando la notación en T




COMPILADORES; ING. DIEGO BAROJA; 5TO
INGENIERÍA
COMPILADORES CRUZADOS

Si LSN se ejecuta a través de SMM, entonces se tiene un compilador LMN , es
decir un compilador de L a N que se ejecuta en
M. Este proceso se puede ilustrar en la figura 13, que muestra juntos los
diagramas en T de estos compiladores.




Cuando los diagramas en T se colocan juntos como en la figura 13, nótese que el lenguaje de
implementación S del compilador LSN debe ser el mismo que el lenguaje fuente del
compilador ya existente SMM, y además el lenguaje objeto M del compilador ya existente
debe ser el mismo que el lenguaje de implementación de LMN. Los tres diagramas en T de la
figura 13 pueden ponerse en forma de ecuación:

COMPILADORES; ING. DIEGO BAROJA; 5TO   LSN + SMM = LMN
INGENIERÍA
COMPILADORES CRUZADOS

 Ejemplo 4.1: Traductor cruzado Z80-80x86


LSN + SMM = LMN

 A. González González en su Proyecto Fin de Carrera de la E.U. de
   Informática de Oviedo [GONZ91], construye un traductor cruzado
   entre ensamblador para el microprocesador Z80 y los
   microprocesadores de la familia 80x86.




COMPILADORES; ING. DIEGO BAROJA; 5TO
INGENIERÍA
COMPILADORES CRUZADOS






COMPILADORES; ING. DIEGO BAROJA; 5TO
INGENIERÍA
COMPILADORES CRUZADOS

  Las entradas al preprocesador EQN se tratan como si fuesen un
  lenguaje de programación y se aplica la tecnología de los
  traductores, con lo que se consiguen los siguientes beneficios:
   Fácil implementación
   Posibilidad de evolución del lenguaje
  La primera versión del compilador EQN se escribió en lenguaje C, y
  generaba los comandos para el formateador de texto TROFF
  En el siguiente diagrama se muestra un compilador cruzado para
  EQN, ejecutado sobre un ordenador PDP-11 de DECÒ, así se
  obtuvo la ejecución de EQNCTROFF a través del compilador de C
  del PDP-11 (C1111).


COMPILADORES; ING. DIEGO BAROJA; 5TO
INGENIERÍA

Más contenido relacionado

La actualidad más candente

Expresiones regulares y gramaticas
Expresiones regulares y gramaticasExpresiones regulares y gramaticas
Expresiones regulares y gramaticasRobin Pena
 
Analizador Sintáctico
Analizador SintácticoAnalizador Sintáctico
Analizador SintácticoPablo Guerra
 
Estructura de un compilador 2
Estructura de un compilador 2Estructura de un compilador 2
Estructura de un compilador 2perlallamas
 
20 tips para escribir stored procedures en sql server
20 tips para escribir stored procedures en sql server20 tips para escribir stored procedures en sql server
20 tips para escribir stored procedures en sql server774angito
 
automatas finitos
 automatas finitos automatas finitos
automatas finitosAnel Sosa
 
Lenguajes libre de contexto
Lenguajes libre de contextoLenguajes libre de contexto
Lenguajes libre de contextoVerónica Es'Loo
 
maquinas de turing jflap
maquinas de turing jflapmaquinas de turing jflap
maquinas de turing jflapAnel Sosa
 
Arboles de derivacion
Arboles de derivacionArboles de derivacion
Arboles de derivacionLuis Couoh
 
Comparativa sgbd comercial vs libre
Comparativa sgbd comercial vs libreComparativa sgbd comercial vs libre
Comparativa sgbd comercial vs libreFportavella
 
2 2 estilos arquitectonicos
2 2 estilos arquitectonicos2 2 estilos arquitectonicos
2 2 estilos arquitectonicoslandeta_p
 
Notación infija postfija
Notación infija postfijaNotación infija postfija
Notación infija postfijaOmarzingm
 
Fire Bird
Fire BirdFire Bird
Fire Birdlejogu
 
Language processing system.pdf
Language processing system.pdfLanguage processing system.pdf
Language processing system.pdfRakibRahman19
 
Practicas Lenguaje ensamblador
Practicas Lenguaje ensambladorPracticas Lenguaje ensamblador
Practicas Lenguaje ensambladorJorge Pulido
 
Arboles En Estructura de Datos
Arboles En Estructura de DatosArboles En Estructura de Datos
Arboles En Estructura de DatosDARKGIRL93
 

La actualidad más candente (20)

04 j flex
04 j flex04 j flex
04 j flex
 
Expresiones regulares y gramaticas
Expresiones regulares y gramaticasExpresiones regulares y gramaticas
Expresiones regulares y gramaticas
 
Analizador Sintáctico
Analizador SintácticoAnalizador Sintáctico
Analizador Sintáctico
 
Compiladores
CompiladoresCompiladores
Compiladores
 
Estructura de un compilador 2
Estructura de un compilador 2Estructura de un compilador 2
Estructura de un compilador 2
 
20 tips para escribir stored procedures en sql server
20 tips para escribir stored procedures en sql server20 tips para escribir stored procedures en sql server
20 tips para escribir stored procedures en sql server
 
Wireshark
Wireshark Wireshark
Wireshark
 
automatas finitos
 automatas finitos automatas finitos
automatas finitos
 
Lenguajes libre de contexto
Lenguajes libre de contextoLenguajes libre de contexto
Lenguajes libre de contexto
 
maquinas de turing jflap
maquinas de turing jflapmaquinas de turing jflap
maquinas de turing jflap
 
Arboles de derivacion
Arboles de derivacionArboles de derivacion
Arboles de derivacion
 
Comparativa sgbd comercial vs libre
Comparativa sgbd comercial vs libreComparativa sgbd comercial vs libre
Comparativa sgbd comercial vs libre
 
2 2 estilos arquitectonicos
2 2 estilos arquitectonicos2 2 estilos arquitectonicos
2 2 estilos arquitectonicos
 
Notación infija postfija
Notación infija postfijaNotación infija postfija
Notación infija postfija
 
Acceso Directo de Memoria
Acceso Directo de MemoriaAcceso Directo de Memoria
Acceso Directo de Memoria
 
Fire Bird
Fire BirdFire Bird
Fire Bird
 
Language processing system.pdf
Language processing system.pdfLanguage processing system.pdf
Language processing system.pdf
 
Practicas Lenguaje ensamblador
Practicas Lenguaje ensambladorPracticas Lenguaje ensamblador
Practicas Lenguaje ensamblador
 
Arboles En Estructura de Datos
Arboles En Estructura de DatosArboles En Estructura de Datos
Arboles En Estructura de Datos
 
Dominio de base de datos
Dominio de base de datosDominio de base de datos
Dominio de base de datos
 

Destacado

Mejores iniciativas ti cs del ecuador 2013
Mejores iniciativas ti cs del ecuador 2013Mejores iniciativas ti cs del ecuador 2013
Mejores iniciativas ti cs del ecuador 2013DIEGO BAROJA
 
C:\fakepath\compiladores
C:\fakepath\compiladoresC:\fakepath\compiladores
C:\fakepath\compiladorespaulina8
 
Transmisiones y reducciones utilizadas en robótica
Transmisiones y reducciones utilizadas en robóticaTransmisiones y reducciones utilizadas en robótica
Transmisiones y reducciones utilizadas en robóticaVinicio Acuña
 
Diapositivas lenguaje de programación gladys
Diapositivas lenguaje de programación gladysDiapositivas lenguaje de programación gladys
Diapositivas lenguaje de programación gladysgladys
 
Cap2 compiladores
Cap2 compiladoresCap2 compiladores
Cap2 compiladoresCJAO
 
Cap4
Cap4Cap4
Cap4CJAO
 
Cap4 compiladores
Cap4 compiladoresCap4 compiladores
Cap4 compiladoresCJAO
 

Destacado (14)

Bootstrapping
BootstrappingBootstrapping
Bootstrapping
 
Compilador2
Compilador2Compilador2
Compilador2
 
Traductores de lenguajes
Traductores   de    lenguajesTraductores   de    lenguajes
Traductores de lenguajes
 
Mejores iniciativas ti cs del ecuador 2013
Mejores iniciativas ti cs del ecuador 2013Mejores iniciativas ti cs del ecuador 2013
Mejores iniciativas ti cs del ecuador 2013
 
C:\fakepath\compiladores
C:\fakepath\compiladoresC:\fakepath\compiladores
C:\fakepath\compiladores
 
Pasadas multiples
Pasadas       multiplesPasadas       multiples
Pasadas multiples
 
Transmisiones y reducciones utilizadas en robótica
Transmisiones y reducciones utilizadas en robóticaTransmisiones y reducciones utilizadas en robótica
Transmisiones y reducciones utilizadas en robótica
 
Proyecto de Sistemas de Información I
Proyecto de Sistemas de Información IProyecto de Sistemas de Información I
Proyecto de Sistemas de Información I
 
Proyecto de Sistemas de Información
Proyecto de Sistemas de InformaciónProyecto de Sistemas de Información
Proyecto de Sistemas de Información
 
Etapas de compilacion
Etapas de compilacionEtapas de compilacion
Etapas de compilacion
 
Diapositivas lenguaje de programación gladys
Diapositivas lenguaje de programación gladysDiapositivas lenguaje de programación gladys
Diapositivas lenguaje de programación gladys
 
Cap2 compiladores
Cap2 compiladoresCap2 compiladores
Cap2 compiladores
 
Cap4
Cap4Cap4
Cap4
 
Cap4 compiladores
Cap4 compiladoresCap4 compiladores
Cap4 compiladores
 

Similar a Arquitecturas de ordenadores y compiladores cruzados

Clase3 guia1-introduccion-compiladores-conceptos
Clase3 guia1-introduccion-compiladores-conceptosClase3 guia1-introduccion-compiladores-conceptos
Clase3 guia1-introduccion-compiladores-conceptosInfomania pro
 
Conceptos De Compilador
Conceptos De CompiladorConceptos De Compilador
Conceptos De CompiladorJoel Soto
 
Conceptos de compilador
Conceptos de compiladorConceptos de compilador
Conceptos de compiladorJoel Soto
 
Compilador e interpretador
Compilador e interpretadorCompilador e interpretador
Compilador e interpretadorFrancisco Leal
 
Aplicar los pricipios de programacion en la solucion de problemas 33
Aplicar los pricipios de programacion en la solucion de problemas 33Aplicar los pricipios de programacion en la solucion de problemas 33
Aplicar los pricipios de programacion en la solucion de problemas 33Jahir Sanchez Sdval
 
Powerpoint jimpulgar
Powerpoint jimpulgarPowerpoint jimpulgar
Powerpoint jimpulgarjimsaso
 
Programacion ensamblador-procesadoresk
Programacion ensamblador-procesadoreskProgramacion ensamblador-procesadoresk
Programacion ensamblador-procesadoreskJohann Chambilla
 
Lenguaje Ensamblador00
Lenguaje Ensamblador00Lenguaje Ensamblador00
Lenguaje Ensamblador00Car_00_01
 
Lenguaje ensamblador
Lenguaje ensambladorLenguaje ensamblador
Lenguaje ensambladorCar_00_01
 
Programación de microcontrolador
Programación de microcontroladorProgramación de microcontrolador
Programación de microcontroladorTaqui Wajuyat Flor
 
Lenguajes de programacion
Lenguajes de programacionLenguajes de programacion
Lenguajes de programacionJohan95
 

Similar a Arquitecturas de ordenadores y compiladores cruzados (20)

Clase3 guia1-introduccion-compiladores-conceptos
Clase3 guia1-introduccion-compiladores-conceptosClase3 guia1-introduccion-compiladores-conceptos
Clase3 guia1-introduccion-compiladores-conceptos
 
Mipag web
Mipag webMipag web
Mipag web
 
Conceptos De Compilador
Conceptos De CompiladorConceptos De Compilador
Conceptos De Compilador
 
Conceptos de compilador
Conceptos de compiladorConceptos de compilador
Conceptos de compilador
 
Programación de microcontrolador
Programación de microcontroladorProgramación de microcontrolador
Programación de microcontrolador
 
Ensayo
EnsayoEnsayo
Ensayo
 
Compilador e interpretador
Compilador e interpretadorCompilador e interpretador
Compilador e interpretador
 
Aplicar los pricipios de programacion en la solucion de problemas 33
Aplicar los pricipios de programacion en la solucion de problemas 33Aplicar los pricipios de programacion en la solucion de problemas 33
Aplicar los pricipios de programacion en la solucion de problemas 33
 
Powerpoint jimpulgar
Powerpoint jimpulgarPowerpoint jimpulgar
Powerpoint jimpulgar
 
Lenguajes de desarrollo (programación)
Lenguajes de desarrollo (programación)Lenguajes de desarrollo (programación)
Lenguajes de desarrollo (programación)
 
Presentación1
Presentación1Presentación1
Presentación1
 
Presentación1
Presentación1Presentación1
Presentación1
 
Programacion ensamblador-procesadoresk
Programacion ensamblador-procesadoreskProgramacion ensamblador-procesadoresk
Programacion ensamblador-procesadoresk
 
Unidad 3
Unidad 3Unidad 3
Unidad 3
 
Lenguaje Ensamblador00
Lenguaje Ensamblador00Lenguaje Ensamblador00
Lenguaje Ensamblador00
 
Lenguaje ensamblador
Lenguaje ensambladorLenguaje ensamblador
Lenguaje ensamblador
 
Lenguaje Ensamblador
Lenguaje EnsambladorLenguaje Ensamblador
Lenguaje Ensamblador
 
COMPILADORES
COMPILADORESCOMPILADORES
COMPILADORES
 
Programación de microcontrolador
Programación de microcontroladorProgramación de microcontrolador
Programación de microcontrolador
 
Lenguajes de programacion
Lenguajes de programacionLenguajes de programacion
Lenguajes de programacion
 

Más de DIEGO BAROJA

Presentacion de procesadores de lenguajes
Presentacion de procesadores de lenguajesPresentacion de procesadores de lenguajes
Presentacion de procesadores de lenguajesDIEGO BAROJA
 
LENGUAJES DE PROGRAMACION
LENGUAJES DE PROGRAMACIONLENGUAJES DE PROGRAMACION
LENGUAJES DE PROGRAMACIONDIEGO BAROJA
 
Herramientas web 20 pdf
Herramientas web 20 pdfHerramientas web 20 pdf
Herramientas web 20 pdfDIEGO BAROJA
 
Herramientas web 20 pdf
Herramientas web 20 pdfHerramientas web 20 pdf
Herramientas web 20 pdfDIEGO BAROJA
 
Guias modulo computacion
Guias modulo computacionGuias modulo computacion
Guias modulo computacionDIEGO BAROJA
 
Guias modulo computacion
Guias modulo computacionGuias modulo computacion
Guias modulo computacionDIEGO BAROJA
 

Más de DIEGO BAROJA (7)

Presentacion de procesadores de lenguajes
Presentacion de procesadores de lenguajesPresentacion de procesadores de lenguajes
Presentacion de procesadores de lenguajes
 
LENGUAJES DE PROGRAMACION
LENGUAJES DE PROGRAMACIONLENGUAJES DE PROGRAMACION
LENGUAJES DE PROGRAMACION
 
Web 20 en el aula
Web 20 en el aulaWeb 20 en el aula
Web 20 en el aula
 
Herramientas web 20 pdf
Herramientas web 20 pdfHerramientas web 20 pdf
Herramientas web 20 pdf
 
Herramientas web 20 pdf
Herramientas web 20 pdfHerramientas web 20 pdf
Herramientas web 20 pdf
 
Guias modulo computacion
Guias modulo computacionGuias modulo computacion
Guias modulo computacion
 
Guias modulo computacion
Guias modulo computacionGuias modulo computacion
Guias modulo computacion
 

Arquitecturas de ordenadores y compiladores cruzados

  • 1. ARQUITECTURAS DE ORDENADORES Y COMPILADORES CRUZADOS PUCESI ESCUELA DE INGENIERIA EN SISTEMAS COMPILADORES; ING. DIEGO BAROJA; 5TO INGENIERÍA
  • 2. ARQUITECTURAS DE ORDENADORES En la disciplina de Procesadores de Lenguaje los compiladores ocupan una posición privilegiada, dado que son las herramientas más utilizadas por los profesionales de la Informática para el desarrollo de aplicaciones. En el caso particular del desarrollo de compiladores es necesario tener definidos tres pilares básicos:  La definición léxica, sintáctica y semántica del lenguaje fuente a compilar.  La estructura interna del compilador  La arquitectura del ordenador y su repertorio de instrucciones que constituirá el lenguaje objeto COMPILADORES; ING. DIEGO BAROJA; 5TO INGENIERÍA
  • 3. ARQUITECTURAS DE ORDENADORES Los dos primeros pilares se tratarán en los apartados siguientes, con el tercer pilar tan sólo trata de resaltarse la relación intima entre las tecnologías de compilación y las arquitecturas de ordenadores, y los problemas que plantea la rápida evolución de éstas últimas. El desarrollo de nuevas arquitecturas de ordenadores que origina a su vez las correspondientes generaciones de microprocesadores con sus repertorios de instrucciones planteándose entre otros estos dos problemas: • ¿Cómo se pueden ejecutar las aplicaciones desarrolladas para otras arquitecturas de ordenadores en la nueva arquitectura? • Dado que un compilador es un programa demasiado complejo para escribirlo directamente en lenguaje máquina COMPILADORES; ING. DIEGO BAROJA; 5TO INGENIERÍA
  • 4. ARQUITECTURAS DE ORDENADORES ¿Con qué se escribe el primer compilador? Las dos cuestiones anteriores están ligadas entre sí, sin embargo el primer problema planteado no sólo es aplicable a la construcción de nuevas arquitecturas, también se aparece cuando es necesaria la compatibilidad de aplicaciones entre diferentes sistemas operativos y arquitecturas de ordenadores. Las soluciones habitualmente empleadas para resolver este problema es el empleo de alguna de las técnicas y herramientas presentadas en la fig. 10 y que se comentan a continuación. COMPILADORES; ING. DIEGO BAROJA; 5TO INGENIERÍA
  • 5. ARQUITECTURAS DE ORDENADORES Intérpretes software o emuladores software. Un intérprete software de código binario es un programa que lee una a una las instrucciones binarias de la arquitectura antigua que están en un fichero ejecutable, y las interpreta. Los intérpretes no son muy rápidos, pero se pueden construir y adaptar a distintas arquitecturas sin excesivos costes de desarrollo. Se puede aumentar el rendimiento de los intérpretes creando una caché que permita almacenar formas intermedias de instrucciones que ya se interpretaron previamente. COMPILADORES; ING. DIEGO BAROJA; 5TO INGENIERÍA
  • 6. ARQUITECTURAS DE ORDENADORES Ejemplos comerciales de intérpretes software binario son los emuladores de DOS para distintos sistemas operativos (por ejemplo SoftPCÒ de Insignia Solutions). Otro ejemplo son los intérpretes de la máquina abstracta JVM (Java Virtual Machine) para distintas plataformas y que permiten ejecutar los códigos binarios denominados bytecode (ficheros con la extensión .class). Emuladores hardware. Un emulador hardware trabaja de forma similar a un intérprete de software, pero está implementado en hardware de forma que decodifica las instrucciones de la arquitectura antigua y las traduce a la nueva arquitectura. COMPILADORES; ING. DIEGO BAROJA; 5TO INGENIERÍA
  • 7. ARQUITECTURAS DE ORDENADORES  Un emulador hardware es mucho más rápido que un intérprete software, sin embargo sólo se puede diseñar para una máquina específica. Un ejemplo son los microprocesadores Java que emulan la máquina abstracta JVM (Java Virtual Machine), también denominados por Sun arquitecturas PicoJava. COMPILADORES; ING. DIEGO BAROJA; 5TO INGENIERÍA
  • 8. ARQUITECTURAS DE ORDENADORES  Traductores entre códigos binarios o ensambladores. Son conjuntos de instrucciones de la nueva arquitectura que reproducen el comportamiento de un programa en la arquitectura antigua. Habitualmente, la información de la máquina antigua se almacena en registros de la nueva máquina. Los programas traducidos a nivel binario o ensamblador son más rápidos que los intérpretes software o emuladores hardware, pero más lentos que los programas construidos con compiladores nativos, que aprovechan al máximo la arquitectura de la nueva máquina. Ejemplos de traductores binarios son los desarrollados por DEC para traducir instrucciones de las arquitecturas VAXÒ y MIPSÒ a la nueva arquitectura ALPHAÒ. COMPILADORES; ING. DIEGO BAROJA; 5TO INGENIERÍA
  • 9. ARQUITECTURAS DE ORDENADORES  Compiladores nativos. Los programas fuente antiguos se pueden volver a recompilar compiladores desarrollados para la nueva arquitectura, aprovechando al máximo sus características. Esta es la opción que produce la mejor calidad de código objeto en la nueva arquitectura, y por consiguiente la mayor velocidad con respecto a las opciones comentadas anteriormente. En el siguiente apartado se explican los compiladores cruzados, como una herramienta para portar compiladores y software entre distintas arquitecturas. COMPILADORES; ING. DIEGO BAROJA; 5TO INGENIERÍA
  • 10. ARQUITECTURAS DE ORDENADORES  Otro problema clásico en arquitectura de ordenadores es como medir el rendimiento de las diferentes arquitecturas y compararlas entre sí [PATT90]. Actualmente las pruebas de rendimiento más ampliamente aceptadas son las pruebas SPEC, desarrolladas por el organismo System Performance Evaluation Corporation y que están especializadas en medir el rendimiento en plataformas que utilizan microprocesadores diferentes. Una versión de las pruebas data de 1992, y con versiones diferentes para operaciones con enteros (SPECint92) y para operaciones con punto flotante (SPECfp92) [SHAR94]. COMPILADORES; ING. DIEGO BAROJA; 5TO INGENIERÍA
  • 11. COMPILADORES CRUZADOS Uno de los problemas que se plantea es desarrollar los primeros compiladores en una arquitectura nueva, dado que un compilador es un programa demasiado complejo para escribirlo directamente en lenguaje máquina. Sin embargo cuando se trabaja con un nuevo tipo de microprocesador, alguien tiene que escribir el primer compilador. Otro problema que se plantea es como se puede ejecutar el código antiguo de otras arquitecturas en la nueva arquitectura. Sin embargo esta tarea se puede realizar más cómodamente en una máquina donde ya se dispongan herramientas software, los compiladores cruzados se encargaran del resto del trabajo. Se denomina compilador cruzado (en inglés cross-compiler) a un compilador que se ejecuta en una máquina pero el código objeto es para otra máquina. Supóngase que se escribe un compilador cruzado para un nuevo lenguaje L, siendo el lenguaje de implementación S, y el lenguaje objeto es el código de una máquina N (nueva). Usando una notación en T, se tiene: COMPILADORES; ING. DIEGO BAROJA; 5TO INGENIERÍA
  • 12. COMPILADORES CRUZADOS Si ya existe un compilador del lenguaje S, que se ejecuta en una máquina M y genera un código para la máquina M, es decir usando la notación en T COMPILADORES; ING. DIEGO BAROJA; 5TO INGENIERÍA
  • 13. COMPILADORES CRUZADOS Si LSN se ejecuta a través de SMM, entonces se tiene un compilador LMN , es decir un compilador de L a N que se ejecuta en M. Este proceso se puede ilustrar en la figura 13, que muestra juntos los diagramas en T de estos compiladores. Cuando los diagramas en T se colocan juntos como en la figura 13, nótese que el lenguaje de implementación S del compilador LSN debe ser el mismo que el lenguaje fuente del compilador ya existente SMM, y además el lenguaje objeto M del compilador ya existente debe ser el mismo que el lenguaje de implementación de LMN. Los tres diagramas en T de la figura 13 pueden ponerse en forma de ecuación: COMPILADORES; ING. DIEGO BAROJA; 5TO LSN + SMM = LMN INGENIERÍA
  • 14. COMPILADORES CRUZADOS  Ejemplo 4.1: Traductor cruzado Z80-80x86 LSN + SMM = LMN  A. González González en su Proyecto Fin de Carrera de la E.U. de Informática de Oviedo [GONZ91], construye un traductor cruzado entre ensamblador para el microprocesador Z80 y los microprocesadores de la familia 80x86. COMPILADORES; ING. DIEGO BAROJA; 5TO INGENIERÍA
  • 15. COMPILADORES CRUZADOS  COMPILADORES; ING. DIEGO BAROJA; 5TO INGENIERÍA
  • 16. COMPILADORES CRUZADOS Las entradas al preprocesador EQN se tratan como si fuesen un lenguaje de programación y se aplica la tecnología de los traductores, con lo que se consiguen los siguientes beneficios:  Fácil implementación  Posibilidad de evolución del lenguaje La primera versión del compilador EQN se escribió en lenguaje C, y generaba los comandos para el formateador de texto TROFF En el siguiente diagrama se muestra un compilador cruzado para EQN, ejecutado sobre un ordenador PDP-11 de DECÒ, así se obtuvo la ejecución de EQNCTROFF a través del compilador de C del PDP-11 (C1111). COMPILADORES; ING. DIEGO BAROJA; 5TO INGENIERÍA