Articulo Cientifico Compiladores

3
Compiladores Cruzados Kevin Edgar Chura Mamani - [email protected], Jorge Antonio Linares Vera - [email protected] Estudiantes del 3er año “A” del Curso de Compiladores y Teoría de Lenguajes. Escuela Académico Profesional de Ingeniería en Informática y Sistemas – Facultad de Ingeniería. Universidad Nacional Jorge Basadre Grohmann Tacna, Perú Resumen — En este artículo se define los conceptos de un compilador cruzado, debido a un caso de estudio que nació por necesidad y que se presentaron en varias situaciones. Por ejemplo, una empresa de la posibilidad de apoyar varias versiones diferentes de un sistema operativo o de soporte a varios sistemas operativos diferentes. Mediante el uso de un compilador cruzado, una sola estructura medio ambiente puede ser configurada para compilar para cada uno de estos objetivos. Compilar en una granja de servidores. Al igual que compilar para varias máquinas, una construcción compleja que involucra muchos compilar las operaciones se pueden ejecutar en cualquier máquina que es gratis sin importar su marca o la versión actual de un sistema operativo. I. INTRODUCCIÓN La compilación consiste en coger los ficheros fuente que conforman un programa y, línea por línea, traducir cada instrucción de alto nivel por varias instrucciones en código máquina que realicen lo que la instrucción de alto nivel expresa. Si se repite esa traducción para todas las líneas del código fuente, obtendremos un conjunto de instrucciones máquina, grabando esas instrucciones máquina en un fichero que contiene una estructura interna, el cuál un determinado sistema operativo es capaz de entender, obteniendo un fichero binario ejecutable, o simplemente, "un ejecutable". El encargado de realizar esta traducción es un tipo de programa llamado compilador. En su funcionamiento más básico, un compilador acepta uno o más ficheros fuente y si no contienen errores sintácticos produce un fichero binario ejecutable, que un sistema operativo será capaz de cargar en memoria principal y pedir a la CPU que lo ejecute. A menudo se compara a un compilador con un traductor de idiomas. Por ejemplo un libro escrito en inglés; que para publicar su versión en español, una persona que conoce las reglas de los dos idiomas y dispone de la técnica para expresarse en ambos va leyendo el libro en inglés frase a frase y va escribiendo su equivalente en español. Estas técnicas de compilación se fueron desarrollando, pero ya desde 1958, personalidades como Strong y otros proponían una solución al problema de que un compilador fuera utilizable por varias máquinas objeto, para ello se dividió por primera vez al compilador en dos fases. El “front end”, la primera fase encargada de analizar el programa fuente y el “back end”, la segunda fase encarga de generar el código para la máquina objeto. Al puente de unión de ambas fases era un

Transcript of Articulo Cientifico Compiladores

Page 1: Articulo Cientifico Compiladores

Compiladores CruzadosKevin Edgar Chura Mamani - [email protected],

Jorge Antonio Linares Vera - [email protected]

Estudiantes del 3er año “A” del Curso de Compiladores y Teoría de Lenguajes.

Escuela Académico Profesional de Ingeniería en Informática y Sistemas – Facultad de Ingeniería.Universidad Nacional Jorge Basadre Grohmann

Tacna, Perú

Resumen — En este artículo se define los conceptos de un compilador cruzado, debido a un caso de estudio que nació por necesidad y que se presentaron en varias situaciones. Por ejemplo, una empresa de la posibilidad de apoyar varias versiones diferentes de un sistema operativo o de soporte a varios sistemas operativos diferentes. Mediante el uso de un compilador cruzado, una sola estructura medio ambiente puede ser configurada para compilar para cada uno de estos objetivos. Compilar en una granja de servidores. Al igual que compilar para varias máquinas, una construcción compleja que involucra muchos compilar las operaciones se pueden ejecutar en cualquier máquina que es gratis sin importar su marca o la versión actual de un sistema operativo.

I. INTRODUCCIÓN

La compilación consiste en coger los ficheros fuente que conforman un programa y, línea por línea, traducir cada instrucción de alto nivel por varias instrucciones en código máquina que realicen lo que la instrucción de alto nivel expresa.

Si se repite esa traducción para todas las líneas del código fuente, obtendremos un conjunto de instrucciones máquina, grabando esas instrucciones máquina en un fichero que contiene una estructura interna, el cuál un determinado sistema operativo es capaz de entender, obteniendo un fichero binario ejecutable, o simplemente, "un ejecutable".

El encargado de realizar esta traducción es un tipo de programa llamado compilador. En su funcionamiento más básico, un compilador acepta uno o más ficheros fuente y si no contienen errores sintácticos produce un fichero binario ejecutable, que un sistema operativo será capaz de cargar en memoria principal y pedir a la CPU que lo ejecute.

A menudo se compara a un compilador con un traductor de idiomas. Por ejemplo un libro escrito en inglés; que para publicar su versión en español, una persona que conoce las reglas de los dos idiomas y dispone de la técnica para expresarse en ambos va leyendo el libro en inglés frase a frase y va escribiendo su equivalente en español.

Estas técnicas de compilación se fueron desarrollando, pero ya desde 1958, personalidades como Strong y otros proponían una solución al problema de que un compilador fuera utilizable por varias máquinas objeto, para ello se dividió por primera vez al compilador en dos fases.

El “front end”, la primera fase encargada de analizar el

programa fuente y el “back end”, la segunda fase encarga de generar el código para la máquina objeto. Al puente de unión de ambas fases era un lenguaje intermedio que le dieron de nombre UNCOL (Universal Computer Oriented Language).

Entonces para que un compilador fuera utilizable por varias máquinas basta únicamente modificar su back end, los proyectos de intento continuaron pero quedó como un ejercicio teórico.

Hoy en día se puede escribir nuevas versiones de compilador, hay muchas herramientas que facilitan la tarea de escribir compiladores o un intérprete informático.

Estas herramientas nos permiten generar el esqueleto del analizador sintáctico a partir de una definición del lenguaje de partida especificada normalmente el programador del compilador realiza las tareas de programar las acciones semánticas asociadas.

Las necesidades que existen obligaron a que aparezcan nuevas herramientas útiles para cuando quiere compilarse código para una plataforma diferente a aquella en la que se ejecuta o para una plataforma a la que no se tiene acceso, o cuando es incómodo compilar en dicha plataforma (sistemas empotrados); ordenadores integrados en dispositivos que tienen recursos extremadamente limitados. Dichas herramientas se denominan compiladores cruzados.

III.FUNDAMENTO

Compiladores CruzadosGeneran código para un sistema distinto del que está

funcionando.¿Que es un Compilador Cruzado?Un compilador cruzado (crosscompiler) es aquel que genera código ejecutable para una plataform diferente a aquella en la que se ejecuta. Esta herramienta es util cuando quiere compilarse código para una plataforma a la que no se tiene acces, o cuando es incomodo o imposible compilar en dicha plataforma (como en el caso de los sistemas empotrados). Por ejemplo, supongamos que queremos desarrollar aplicaciones para un telefono movil, una PDA o una consola de videojuegos. Normalmente será más cómodo realizar el desarrollo en un PC y luego volcar el codigo objeto en el dispositivo de destino. En

Page 2: Articulo Cientifico Compiladores

estas situaciones, el compilador que usaremos en el PC es un caso de compilador cruzado.Un ejemplo de un compilador con estas posibilidades es el NASM, que puede ensamblar, entre otros formatos, ELF(para sistemas UNIX) y COM(para DOS)Como y mencionamos la Gestión de la memoria es una de las

IV. CONCLUSIONES

Es un mundo de ventajas y desventajas : rendimiento, facilidad de uso, facilidad de implementación, y la capacidad de enhebrar, sólo para nombrar unos pocos.

V.REFERENCIAS

[1] Análisis y Diseño de CompiladoresEmiliano Llano Diaz - 1era Edición Junio 2002 - Col Roma México, D.F.

[2] Cuaderno Nº38 Análisis Semántico en Pocesadores de Lenguaje.Universidad de Oviedo - España. Editorial Servitec

[3] Manual del Curso: Teoría de Lenguajes (Unidad III)Tema: Descripción de Lenguajes de ProgramaciónMSc. Diana Cecilia Muñoz CasanovaIngeniera de Sistemas e InformáticaFacultad de Ingeniería - E.A.P de Ingeniería de Sistemase Informática - Universidad del Santa - Chimbote

[4] Cross Compiler. Se encuentra disponible en:http://www.multilingualarchive.com/ma/enwiki/es/Cross_compiler

[5] Compiladores Cruzados. Se encuentra disponible en:http://www.slideshare.net/Rolandovonchong/compiladores-8733490

Page 3: Articulo Cientifico Compiladores