Arquitecturas de ordenadores y compiladores cruzados

16
ARQUITECTURAS DE ORDENADORES Y COMPILADORES CRUZADOS COMPILADORES; ING. DIEGO BAROJA; 5TO INGENIERÍA PUCESI ESCUELA DE INGENIERIA EN SISTEMAS

description

Arquitectura de los computadores. Compiladores cruzados

Transcript of Arquitecturas de ordenadores y compiladores cruzados

Page 1: Arquitecturas de ordenadores y compiladores cruzados

ARQUITECTURAS DE ORDENADORES Y

COMPILADORES CRUZADOS

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

PUCESIESCUELA DE INGENIERIA EN SISTEMAS

Page 2: Arquitecturas de ordenadores y compiladores cruzados

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 compiladorLa arquitectura del ordenador y su repertorio de

instrucciones que constituirá el lenguaje objeto

Page 3: Arquitecturas de ordenadores y compiladores cruzados

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

Page 4: Arquitecturas de ordenadores y compiladores cruzados

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.

Page 5: Arquitecturas de ordenadores y compiladores cruzados

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.

Page 6: Arquitecturas de ordenadores y compiladores cruzados

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.

Page 7: Arquitecturas de ordenadores y compiladores cruzados

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.

Page 8: Arquitecturas de ordenadores y compiladores cruzados

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Ò.

Page 9: Arquitecturas de ordenadores y compiladores cruzados

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.

Page 10: Arquitecturas de ordenadores y compiladores cruzados

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].

Page 11: Arquitecturas de ordenadores y compiladores cruzados

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:

Page 12: Arquitecturas de ordenadores y compiladores cruzados

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

Page 13: Arquitecturas de ordenadores y compiladores cruzados

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 enM. 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:

LSN + SMM = LMN

Page 14: Arquitecturas de ordenadores y compiladores cruzados

COMPILADORES; ING. DIEGO BAROJA; 5TO 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.

Page 15: Arquitecturas de ordenadores y compiladores cruzados

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

COMPILADORES CRUZADOS

Ejemplo 4.2: Preprocesador EQN

Las herramientas que acompañan al sistema operativo UNIX fueron unas de las primeras que utilizaron la tecnología de los procesadores de lenguaje y de los compiladores cruzados para su migración entre las distintas plataformas en las que se instaló el sistema operativo UNIX. Así el EQN de Kernighan y Cherry [KERN75] es un preprocesador de expresiones matemáticas, que permite la escritura de expresiones con operadores como sub y sup para subíndices y superíndices y genera los comandos para el formateador de textos TROFF. Si el preprocesador EQN encuentra un texto de entrada de la forma:

CAJA sup 2y escribirá:

  El operador sub es similar sólo que para subíndices.Estos operadores se pueden aplicar recursivamente, así por ejemplo el siguiente texto:

 resulta:

Page 16: Arquitecturas de ordenadores y compiladores cruzados

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ónPosibilidad de evolución del lenguajeLa primera versión del compilador EQN se escribió en lenguaje C, y generaba los comandos para el formateador de texto TROFFEn 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