Está en la página 1de 10

Universidad Nacional de Trujillo

Facultad de Ciencias Fsicas y Matemticas


Escuela de Informtica

LOS COMPILADORES

Integrantes:
lvarez Carhuajulca Pedro
Pozo Vera Oscar Eduardo
Rodrguez Zavaleta Kevin
Snchez Pedro Edwin
Villanueva Arrestegui Anthony

Trujillo Per
2016
INDICE
INTRODUCCION...................................................................................................................................4
DESARROLLO.......................................................................................................................................5
1. CONCEPTOS IMPORTANTES PARA LA CONTRUCCION DE COMPILADORES EN
INTRPRETES.......................................................................................................................................5
1.1. QUE ES UN COMPILADOR?...............................................................................................5
1.2. PROGRAMA FUENTE EN LEGUANJE FUENTE..............................................................5
1.3. PROGRAMA OBJETO EN LENGUAJE OBJETO..............................................................6
1.4. ESTRUCTURA DE UN COMPILADOR................................................................................7
1.4.1. ANALISIS LEXICO..................................................................................................................7
1.4.2. ANALISIS SINTACTICO.........................................................................................................7
1.4.3. ANALISIS SEMANTICO.........................................................................................................7
1.4.4. GENERADOR DE CDIGO INTERMEDIO........................................................................7
1.4.5. GENERADOR DE CDIGO....................................................................................................7
1.4.6. OPTIMIZADOR DE CDIGO................................................................................................7
2. COMPILADORES DEL LENGUAJE ENSAMBLADOR.........................................................7
2.1. VENTAJAS.................................................................................................................................8
3. COMPILADOR SOURCE TO SOURCE....................................................................................9
3.1. VENTAJAS........................................................................................................................................9
4. TAREAS DE UN ENSAMBLADOR..........................................................................................10
5. CONCLUSIONES........................................................................................................................11
6. REFERENCIAS BIBLIOGRAFICAS........................................................................................11
INTRODUCCION
La teora de compiladores es un rea de conocimientos fundamental para la formacin
de los estudiantes de Informtica. Posee una relevancia prctica y terica en la
formacin del futuro profesional, tanto en el aspecto de la programacin de
computadoras como tambin, en la construccin de la base terica de conocimientos del
mismo.

Es de vital importancia, que un profesional de informtica tenga una slida formacin


en este tema, debido a que, aunque durante su vida profesional no se dedique al diseo
de compiladores, sus aplicaciones podrn ser mucho ms eficientes, si aplica
mencionados conocimientos adquiridos.

En el Per no se tratan tpicos de Compiladores como: optimizacin de cdigo


intermedio, soporte para programacin orientada a objetos o modificacin dinmica de
cdigo. Esto debido a que por ser temas complicados, requiere del tiempo adecuado
para su aprendizaje y de un nivel de abstraccin muy alto.

Por lo tanto, es necesario realizar proyectos que permitan difundir el tema de lenguajes
de programacin y Compiladores, especficamente la construccin de un compilador o
intrprete con caractersticas no tratadas anteriormente. Asimismo, herramientas de
software que logren facilitar el uso de las funcionalidades del intrprete y que puedan
llamar ms fcil la atencin de los estudiantes. Adems que concreticen conceptos
involucrados con compiladores, desde los ms simples hasta los ms complejos (como
por ejemplo la modificacin dinmica de cdigo y la optimizacin de cdigo).

Por tal razn, en el presente ensayo, se abarcaran temas referentes a los compiladores,
programas fuente y destino, diferenciando las semejanzas entre ellos, para de esta
manera poder distinguirlos con claridad; de igual manera se mencionan las ventajas que
existen para que un sistema de procesamiento de lenguajes en el cual el compilador
produce un lenguaje ensamblador en vez de un lenguaje mquina y que ventajas hay en
cuanto al uso de C como lenguaje destino para un compilador. Finalmente, se
describieron algunas tareas que necesita realizar un ensamblador.

3
DESARROLLO
1. CONCEPTOS IMPORTANTES PARA LA CONTRUCCION DE
COMPILADORES EN INTRPRETES
Hoy en da alrededor de todo el mundo se utilizan los llamados programas, pero
nunca se ha llegado a preguntar, Qu son? o De dnde vienen?. Todo el software que
se utiliza del da de hoy, es un derivado de un lenguaje fuente (cdigo fuente), que pasa
por un proceso a travs de un compilador, el cual permite que sea ms sencilla la
interaccin con la computadora y sus componentes electrnicos.

1.1. QUE ES UN COMPILADOR?


Un compilador es aquel traductor que tiene como entrada una sentencia en
lenguaje formal y como salida tiene un fichero ejecutable, es decir, realiza una
traduccin de un lenguaje de alto nivel a cdigo mquina, (tambin se entiende
por compilador aquel programa que proporciona un fichero objeto en lugar del
ejecutable final).

Ahora bien, para entender qu diferencia hay entre uno y otro, principalmente se
debe de conocer que son cada uno por separado.

1.2. PROGRAMA FUENTE EN LEGUANJE FUENTE

El lenguaje fuente (cdigo fuente) de un programa informtico (o software) es


un conjunto de lneas de texto que son las instrucciones que debe seguir la
computadora para ejecutar dicho programa. Por tanto, en el cdigo fuente de un
programa esta descrito por completo su funcionamiento. El lenguaje fuente de
un programa est escrito por un programador en algn lenguaje de
programacin, pero en este primer estado no es directamente ejecutable por la
computadora, sino que debe ser traducido a otro lenguaje (el lenguaje maquina o
cdigo objeto) que si pueda ser ejecutado por el hardware de la computadora.
Para esta traduccin se usan los llamados compiladores, ensambladores,
intrpretes y otros sistemas de traduccin.
1.3. PROGRAMA OBJETO EN LENGUAJE OBJETO

4
Mientras que el cdigo objeto es el cdigo que resulta de la compilacin del
cdigo fuente. Consiste en lenguaje maquina o bytecode y se distribuye en
varios archivos que corresponden a cada cdigo fuente compilado. Para obtener
un programa ejecutable se han de enlazar todos los archivos de cdigo objeto
con un programa llamado enlazador.

De esta manera, la gran diferencia que existe entre uno del otro, es que el
lenguaje fuente es la base para que pueda existir el programa destino (programa
objeto).

A continuacin se presenta un cuadro comparativo detallando estos aspectos:

PROGRAMA DESTINO PROGRAMA


FUENTE
Se le conoce como cdigo fuente. Se le conoce como cdigo fuente.

Cdigo que resulta de la compilacin del Conjunto de lneas de texto, que son las
programa fuente. instrucciones que debe de seguir la
computadora para ejecutar mencionado
programa.

Para tener el programa ejecutable, es Principio fundamental de todo programa


necesario enlazar todos los archivos de destino, siendo lavase que los crea.
cdigo objeto, con su respectivo
programa denominado enlazador.

Caracteres traducidos por los Escrito por un programador, en un


compiladores, intrpretes, lenguaje de programacin.
ensambladores, y otros sistemas de
traduccin.

Es ejecutable por la computadora, en su No es directamente ejecutable por la


primer estado, ya que su estado bsico es computadora, en su primer estado.
funcional siempre para el hardware.

5
1.4. ESTRUCTURA DE UN COMPILADOR
1.4.1. ANALISIS LEXICO
Es la primera fase del compilador que se encarga de leer el cdigo fuente y
procesarlo, tambin es conocido como escaneo por su nombre en ingls
(Scanner). Durante este proceso se realizan operaciones bsicas del manejo
de cadenas de acuerdo a ciertas reglas del lenguaje, estas reglas las
conocemos en teora computacional como expresiones regulares.

1.4.2. ANALISIS SINTACTICO


Es la segunda fase de compilacin, donde se analiza la estructura gramatical
del lenguaje fuente, estas reglas son representadas por las gramticas libres
del contexto y su escaneo con los arboles sintcticos.

1.4.3. ANALISIS SEMANTICO


En la tercera etapa an se analiza el cdigo fuente para verificar las reglas
semnticas, estas reglas estn representadas por la correspondencia de los
tipos de datos que se manejan en el lenguaje.

1.4.4. GENERADOR DE CDIGO INTERMEDIO


Una vez analizado el cdigo fuente y sin haber encontrado algn error
durante las fases anteriores el compilador genera un cdigo intermedio para
prepararlo al cdigo destino.

1.4.5. GENERADOR DE CDIGO


La quinta etapa del compilador tambin conocida como generador de cdigo
o back-end, es el proceso encargado de traducir el lenguaje intermedio a un
cdigo mquina, el cual depender de la arquitectura de la misma.

1.4.6. OPTIMIZADOR DE CDIGO


El ltimo proceso de un compilador es opcional, ya que la optimizacin de
cdigo depende de la arquitectura de la mquina, si esta acepta paralelismo y
que tipo de paralelismo, adems de que no es posible saber a ciencia cierta si
un cdigo optimizado es mejor que el cdigo ingresado por el programador.

2. COMPILADORES DEL LENGUAJE ENSAMBLADOR


Como se sabe, la computadora no entiende directamente al Lenguaje Ensamblador; es
necesario traducirlo a Lenguaje Maquina. Siendo de esta manera, como nacieron los
compiladores del Lenguaje Ensamblador, que son traductores que convierten el cdigo
fuente (en Lenguaje Ensamblador) a cdigo objeto (es decir, a Lenguaje Maquina).
Surge como una necesidad de facilitar al programador la tarea de trabajar con lenguaje
maquina sin perder el control directo con el hardware.

6
2.1. VENTAJAS
Entendiendo este punto, se mencionan las ventajas principales de este tipo de
compiladores:

VELOCIDAD: El proceso de traduccin que realizan los intrpretes, implica un


proceso de cmputo adicional al que el programador quiere realizar. Por ello,
nos encontraremos con que un intrprete es siempre ms lento que realizar la
misma accin en Lenguaje Ensamblador, simplemente porque tiene el costo
adicional de estar traduciendo el programa, cada vez que lo ejecutamos.

De ah nacieron los compiladores, que son mucho ms rpidos que los


intrpretes, pues hacen la traduccin una vez y dejan el cdigo objeto, que ya es
Lenguaje de Maquina, y se puede ejecutar muy rpidamente. Aunque el proceso
de traduccin es ms complejo y costoso que el de ensamblar un programa,
normalmente podemos despreciarlo, contra las ventajas de codificar el programa
ms rpidamente.

TAMAO: Los compiladores e intrpretes generan ms cdigo mquina del


necesario; por ello, el programa ejecutable crece. As, cuando es importante
reducir el tamao del ejecutable, puede convenir usar el lenguaje Ensamblador.
Entre los programas que es crtico el uso mnimo de memoria, tenemos a los
virus y manejadores de dispositivos (drivers). Muchos de ellos, por supuesto,
estn escritos en lenguaje Ensamblador.

FLEXIBILIDAD: Las razones anteriores son cuestin de grado: podemos hacer


las cosas en otro lenguaje, pero queremos hacerlas ms eficientemente. Pero
todos los lenguajes de alto nivel tienen limitantes en el control; al hacer
abstracciones, limitan su propia capacidad. Es decir, existen tareas que la
maquina puede hacer, pero que un lenguaje de alto nivel no permite. Por
ejemplo, en Visual Basic no es posible cambiar la resolucin de monitor a medio
programa; es una limitante, impuesta por la abstraccin del GUI Windows. En
cambio, en ensamblador es sumamente sencillo, pues tenemos el acceso directo
al hardware del monitor.

7
3. COMPILADOR SOURCE TO SOURCE
Un compilador Source To Source o transcompiler es un tipo de compilador que
toma el cdigo fuente de un lenguaje de programacin como su entrada que toma el
cdigo fuente de un lenguaje de programacin como su entrada y salida del cdigo
fuente en otro lenguaje de programacin. Por ejemplo, se puede realizar una
traduccin de un programa de Pascal a C.

Otro propsito del compilador Source To Source es la traduccin de cdigo


heredado de usar la prxima versin del lenguaje de programacin subyacente o
una API que rompe la compatibilidad hacia atrs.

3.1. VENTAJAS

Dicho esto, ya que se entiende la definicin de lo que es un compilador Source


To Source, las ventajas de que C sea su lenguaje destino son las siguientes:

Es un lenguaje muy eficiente puesto que es posible utilizar sus


caractersticas de bajo nivel para realizar implementaciones ptimas.

Proporciona facilidades para realizar programas modulares y/o utilizar


cdigo o bibliotecas existentes.

A pesar de su bajo nivel es el lenguaje ms portado en existencia,


habiendo compiladores para casi todos los sistemas conocidos.

Es el cdigo est formado.

Posee ms rapidez al ejecutarlo.

Se modifica fcilmente.

8
4. TAREAS DE UN ENSAMBLADOR
La tarea fundamental de un ensamblador es traducir un programa en lenguaje de
ensamblador al cdigo correspondiente en lenguaje de mquina. En esencia, al ser
el ensamblador un lenguaje de bajo nivel, las tareas que debe realizar son las
siguientes:

Convertir los cdigos (opcode o mnemnicos: ejemplo LDA, STX) a su


cdigo equivalente en lenguaje de mquina.

Convertir los operandos simblicos (las etiquetas o variables) en las


direcciones correspondientes de los operandos.

Construir las instrucciones en lenguaje de maquina en el formato apropiado.

Convertir las constantes definidas en el programa en su verdadera


representacin.

Escribir el listing en lenguaje de ensamblador con el cdigo en lenguaje


de maquina correspondiente.

Procesar las directrices al ensamblador (las directrices son instrucciones o


comandos dirigidos al ensamblador, estas directrices no se traducen a
lenguaje de mquina, si no que el ensamblador ejecuta alguna accin, como
reservar memoria para variables, entre otras.)

En general, la mayora de las tareas se puede realizar si se recorre el programa lnea por
lnea. Pero surge una dificultad si se trata de traducir una instruccin cuyo operando est
definido ms abajo en el programa. Si esto ocurre, el ensamblador desconoce la
direccin del operando y la instruccin no se podra ensamblar.

9
5. CONCLUSIONES

Muchas veces hemos escuchado el termino compilador, sobre todo dentro


de los campos d estudio que se especializan en la informtica, gracias a la
realizacin de este trabajo, se conoci su significado y su marcada
importancia de estos pequeos programas, los cuales son los responsables
de que existan todas las aplicaciones que utilizaremos en nuestros
ordenadores a diario.

La importancia de los compiladores radica en que sin estos programas, no


existira ninguna aplicacin informtica, ya que son la base de la
programacin en cualquier plataforma.

6. REFERENCIAS BIBLIOGRAFICAS

http://computacion.cs.cinvestav.mx/~mruiz/publicaciones/tesis/tesisIngMic
helRuizTejeida.pdf

http://tesis.pucp.edu.pe/repositorio/bitstream/handle/123456789/1503/GOM
EZ_RENZO_Y_SALAMANCA_JUAN_LENGUAJE_PROGRAMACION
_CODIGO.pdf?sequence=1

http://eprints.sim.ucm.es/9460/1/Memoria.pdf

10

También podría gustarte