You are on page 1of 26

COMPILADORES

CLASE 01 CPI82 2013-2

INTRODUCCIN
DEFINICIONES

LENGUAJES DE PROGRAMACIN
F Los humanos nos relacionamos a travs de Lenguaje

Natural.

Expresar ideas y sentimientos. Razonar. Comunicacin.

F Los computadores slo aceptan y comprenden largas

secuencias de 1s y 0s (Lenguaje de mquina).


Ininteligibles para la mayora de humanos. Especficos para cada tipo de procesador.

F Necesidad de lenguajes para comunicarnos fcilmente

con el computador.

Lenguajes de Programacin.

LENGUAJES DE PROGRAMACIN
F Notaciones formales para describir algoritmos y

funciones que sern ejecutadas por un ordenador.


F Clasificacin de Lenguajes de Programacin:

Segn grado de independencia de la mquina. Segn la forma de sus instrucciones Por generaciones

CLASIFICACIN SEGN INDEPENDENCIA DE LA MAQUINA

F Lenguaje de mquina

Cada instruccin es un cdigo binario Notacin que entiende directamente un computador Las instrucciones y su estructura son particulares de cada maquina.

CLASIFICACIN SEGN INDEPENDENCIA DE LA MAQUINA


F Lenguaje ensamblador

Versin simblica del lenguaje de mquina. Equivalencia uno a uno entre instrucciones de ensamblador y lenguaje maquina. Permite hacer asignaciones de memoria con nombres simblicos. Algunos ensambladores contienen macroinstrucciones cuyo nivel es superior a las instrucciones de ensamblador. Da acceso completo a todos los recursos de la mquina.

CLASIFICACIN SEGN INDEPENDENCIA DE LA MAQUINA


F Lenguajes de medio nivel

Poseen caractersticas de lenguajes de bajo nivel (maquina y ensamblador) y algunas ventajas de los lenguajes de alto nivel Proporciona estructuras de control y datos Ejemplos:
q

C, FORTH

F Lenguajes de alto nivel


No acceso directo al hardware Estructuras de datos complejas Lenguajes orientados a objetos. Ejemplos:
q

C++, JAVA, Pascal

CLASIFICACIN SEGN INDEPENDENCIA DE LA MAQUINA

F Lenguajes orientados a problemas


Resolucin de problemas de un campo o dominio concreto. Ejemplos:


q q q q

HTML Sitios web SQL Bases de datos VHDL y VERILOG Descripcin de hardware MATLAB y GNU-Octave Programacin matricial

CLASIFICACIN SEGN FORMA DE INSTRUCCIONES


F Lenguajes procedimentales

Sentencias de asignacin es construccin bsica de programas Histricamente primeros lenguajes y los mas usados actualmente C, C++, FORTRA, Pascal, etc.

F Lenguajes declarativos

Notacin muy prxima al problema Lenguajes declarativos llamados a funciones (LISP) Lenguajes lgicos clausulas lgicas (PROLOG)

CLASIFICACIN SEGN FORMA DE INSTRUCCIONES

F Lenguajes Orientados a Objetos


Soporte para tipos de datos abstractos y clases (basado en objetos) Soporte para herencia y polimorfismo (orientado a objetos) C++, JAVA, Delphi, etc.

POPULARIDAD DE LOS LENGUAJES DE PROGRAMACIN

http://www.tiobe.com/index.php/content/paperinfo/tpci/tpci_definition.htm

LENGUAJES DE ALTO NIVEL VENTAJAS


F Mas fciles de aprender F No se necesita tener conocimiento del hardware F Liberan de ocupaciones tediosas como el manejo

detallado de memoria
F Ofrecen mltiples estructuras de control F Ofrecen mltiples estructuras de datos y permiten

crear nuevas
F Facilitan la depuracin F Portabilidad de los programas

LENGUAJES DE ALTO NIVEL DESVENTAJAS


Tamao de Archivo

F Mayores tamaos de ficheros, mayores tiempos de

compilacin y ejecucin
24 610 8631

23136

Tamao de archivo para aplicacin Hello World codificada a diferentes niveles de abstraccin: L. mquina, L. ensamblador, L.

PROCESADORES DE LENGUAGE
F Nombre genrico de todas las aplicaciones en las

cuales uno de los datos de entrada es un lenguaje de programacin:


Traductores (translators) Compiladores (compilers) Ensambladores (assemblers) Enlazadores (linkers) Cargadores (loaders) Intrpretes (interpreters) Desensambladores (dissemblers) Decompiladores (decompilers) Depuradores (debuggers) Analizadores de rendimiento (profilers) Optimizadores de cdigo (code optimizers) Compresores (compressors) Preprocesadores (preprocessors) Formteadores (formatters) Editores (editos)

PROCESADORES DE LENGUAGE
F Traductores

Procesa Lenguaje Fuente (LF) y genera Lenguaje Objeto (LO). El Lenguaje de Implementacin (LI) puede ser cualquier lenguaje.

F Ensambladores

Si el LF es lenguaje ensamblador y el LO es el lenguaje de maquina. Traductores simples por la equivalencia entre declaraciones en ensamblador y cdigos binarios en lenguaje maquina. Macroinstrucciones se traducen en mltiples instrucciones de maquina (Macroensambladores)

PROCESADORES DE LENGUAGE
F Compilador

Traductor de LF de alto nivel a LF de bajo nivel.

Programa en Lenguaje fuente (C, C++, Fortran, etc.) ALTO NIVEL

Compilado r
Tiempo de Compilacin

Programa en Lenguaje destino (IR, Ensamblador, Lenguaje de Maquina) BAJO NIVEL

Datos

Programa Objeto
Tiempo de Ejecucin

Resultados

PROCESADORES DE LENGUAGE
F Linkers

Ocurre entre el proceso de compilacin y la ejecucin Necesario cuando el LF permite fragmentacin del programa.
q q

Libreras, procedimientos, subrutinas, etc. El compilador produce cdigos objeto para cada parte.

El linker une los diferentes cdigos objeto en el programa objeto completo.

F Cargador (Loader)

Coloca el archivo ejecutable en memoria Asigna el espacio de memoria Pasa el control a la primera instruccin ejecutarse

COMPILACIN, MONTAJE Y EJECUCIN


L. fuente Traductor compilacin L. ensamblador Ensamblado r C. objeto 0 Linker montaje C. objeto full Cargador Programa en C. objeto 1 C. objeto n

PROCESADORES DE LENGUAGE
F Interprete

Ejecuta en la mquina las instrucciones que encuentra en LF Todo el proceso se realiza en tiempo de ejecucin Aplicacin e interprete coexisten en memoria Ejecucin ms lenta que en programas compilados Mayor portabilidad y flexibilidad.

F Decompilador

Programa traductor de un LF de bajo nivel a un LF de alto nivel. Tarea difcil para que el cdigo generado tenga cierta lgica Requiere esquema de generacin de cdigo

PROCESADORES DE LENGUAGE
F Desensamblador

Caso especial de un decompilador Traduce lenguaje mquina a lenguaje ensamblador

F Depurador (debugger)

Permite encontrar y corregir los errores de programas Permite observar traza programa y visualizar variables, direcciones, etc. Permite observar traza bajo nivel y visualizar registros y memoria Ejecucin paso a paso declaraciones o ensamblador Back-trace ejecucin hasta excepcin (segmentation fault)

PROCESADORES DE LENGUAGE
F Profiler

Examina desempeo de los programas en tiempo de ejecucin Permite identificar el rendimiento en diferentes zonas del cdigo

F Optimizador

Herramientas independientes o incluidas en compiladores Elegir entre velocidad y tamao del cdigo Eliminacin de cdigo muerto Desenvolver loops, utilizar instrucciones de vectorizacin

F Compresores

Reducir tamao de archivos ejecutables

PROCESADORES DE LENGUAGE
F Preprocesadores

Traductor que hace sustitucin de macros No hace ningn anlisis de contexto

F Formateadores

Muchos tipos y diferentes fines Resaltan sintaxis o estructura Conversores de formato Correctores de estilo

F Editores

Resaltan la sintaxis por medio de colores o tipos de letra

TERMINOLOGA ADICIONAL
F Front-end

Fases del procesos de compilacin independientes de la arquitectura destino

F Back-end

Fases del proceso de compilacin dependientes de la arquitectura.

F Compiler Compiler

Herramienta utilizada para generar automticamente partes del compilador


q q q q

Scanner (Flex) Parser (Bison) Analizador semntico (ANTLR) Generador de cdigo (BURG)

TERMINOLOGA ADICIONAL
F Representacin Intermedia (IR)

Es un tipo de lenguaje intermedio entre dos fases del proceso de compilacin. La IR ms importante esta entre el Front-End y el Backend

F Mquina Virtual

Java bytecode Las instrucciones pueden verse como una IR al interprete

F Compilador Retargetable

Compilador que teniendo una mquina destino, puede modificarse sin mayor esfuerzo a una mquina diferente.

TERMINOLOGA ADICIONAL
F Compilador portable

Compilador que puede usarse en diferentes sistemas operativos.

F Cross-compilador

Un compilador que corriendo en una maquina H produce cdigo para una maquina T. T es generalmente un microprocesador embebido.

F Pre-compilador

Un traductor de un lenguaje de alto nivel a otro lenguaje de alto nivel.

TERMINOLOGA ADICIONAL
F Compilador dinmico o Just-in-time compiler

Compilador donde la traduccin del cdigo y la ejecucin del mismo se hacen simultneamente.

F Compilado esttico

El compilador tradicional Opuesto a compilador dinmico 1ro Traduccin a lenguaje de maquina , 2do Ejecucin

F Plataforma de Compilacin

Conjunto de herramientas para hacer I+D en la construccin de compiladores: SUIF, LLVM, ANTLR, etc.

You might also like