Bienvenido: Ingresar

Empty target given.

Quitar mensaje
location: WebHome / HerramientasProgramacion / IntroduccionCompiladores

Introducción a los Compiladores

¿Qué es un compilador?

Un compilador es un programa que traduce un programa escrito en un lenguaje de programación (usualmente de los llamados de alto nivel) a otro lenguaje de programación, generando un programa equivalente que la máquina será capaz de interpretar. El segundo lenguaje puede ser código máquina, pero también puede ser simplemente texto. Este proceso de traducción se conoce como compilación.

Usualmente este proceso de traducción está dividido en tres estratos, conocidos como Front-End, Middle-End y Back-End.

"compilador_simple.png"

Contexto del proceso de compilación

"contexto_compilador.png"

¿Qué es un compilador cruzado?

Un compilador cruzado (cross-compiler) es un compilador capaz de generar código para otra plataforma diferente de aquella en la cual está corriendo.

Tiempo de Compilación - Tiempo de Ejecución

Los términos compile-time y run-time son usualmente referidos en la jerga de la programación. Compile-time se utiliza para todas aquellas acciones relacionadas al programa que pueden ser definidas en esta etapa, es decir previo a que esté corriendo en la plataforma de destino. Por lo contrario, cuando se habla de definiciones en run-time se refiere a aquello parámetros que solo se pueden determinar al momento en que el programa esta corriendo en su plataforma.

"runtime_comptime.png"

GCC el compilador para lenguaje C de GNU

El GNU Compiler Collection (usualmente referido por sus siglas como GCC) es un sistema de compilación producido por el proyecto GNU capaz de soportar varios lenguajes de programación. GCC es uno de los componentes claves de la cadena de herramientas (toolchain) de programación de GNU.

A la vez de ser el compilador oficial del sistema GNU, GCC ha sido adoptado como compilador estándar por muchos otros sistemas operativos tipo-Unix, incluyendo GNU/Linux, la familia BSD y Mac OS X.

GCC ha sido portado a una amplia variedad de arquitectura de procesadors, y es ampliamente distribuido como herramienta comercial, propietaria y en ambientes de desarrollo de software de fuentes cerradas. GCC también está disponible para varias plataformas embebidas como Symbian, AMCC, Freescale Power Architecture-based chips. Muchas compañías hacen, hoy en día, de su negocio la provisión y el soporte de portaciones de gcc a varias plataformas; los fabricantes de chips consideran la portación de gcc casi escencial para el éxito de una arquitectura.

Si bien el compilador inicialmente sólo manejaba lenguaje C, ya en 1997 incorporó C++ y con el tiempo se desarrollaron otros Front-End para lenguajes como Fortran, Pascal, Objective C, Java y Ada entre otros.

El crosscompiler GNUARM

Obtener un compilador cruzado para una determinada arquitectura requiere básicamente que la arquitectura esté soportada, esto es:

"GCC ARM Embedded" es el nombre de un proyecto mantenido por desarrolladores de la propia empresa ARM que provee una distribución de binarios precompilados del GNU toolchain ARM/Newlib o de los propios fuentes para poder ser compilado por el propio usuario.

https://launchpad.net/gcc-arm-embedded

El toolchain consiste de GNU binutils, el conjunto de compiladore de GCC y el debugger GDB. Se utilizan las Newlib como librerías estándar de C.

Del conjunto de programas de binutils serán de interés para este curso:

Del conjunto de programas de compilación se utilizará:

Finalmente utilizaremos para debugging: