Lectura 4: Compilación e Interpretación

Slides:



Advertisements
Presentaciones similares
2. Manejo de memoria Manejo de memoria estática
Advertisements

Ejemplo Práctico de un Compilador Pequeño
Análisis Sintáctico Capítulo 4.
Clasificación de los compiladores
Diseño y análisis de algoritmos
Compiladores e intérpretes Análisis Sintáctico II
Compiladores e intérpretes Análisis Sintáctico III
Programación de Computadores
Cb00843 Traductores Rogelio Dávila Pérez Profesor Planta
Análisis Lexicográfico
SENTENCIAS SECUENCIALES
Máquina Virtual/Multinivel
Facultad de Ciencias de la Computación
Fundamentos de programación
PROGRAMACIÓN.
Iteración La iteración permite modelar problemas en los cuales una secuencia de instrucciones debe ejecutarse varias veces. La cantidad de iteraciones.
INTRODUCCION A LOS ALGORITMOS (Conceptos previos)
Unidad 1. Introducción al proceso de compilación.
Teoría de lenguajes y compiladores
Departamento de Sistemas Informáticos y Programación Universidad Complutense de Madrid Bloque 1: Introduccion Unidad 1: Consideraciones acerca de la eficiencia.
INFORMATICA I Funciones CLASE 13.
UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICO
¿Qué es un algoritmo? “(del árabe al-Khowârizmî, sobrenombre del célebre matemático árabe Mohámed ben Musa). Conjunto ordenado y finito de operaciones.
SOBRECARGA DE FUNCIONES
Compiladores Análisis Léxico Oscar Bonilla Universidad Galileo.
ANALISIS SINTACTICO El análisis gramatical es la tarea de determinar la sintaxis, o estructura, de un programa. Por esta razón también se le conoce como.
Introducción. Agenda Clase 1 ● Preámbulo histórico. ● Razones de la Diversidad de Lenguajes. ● Razones del Éxito de un Lenguaje. ● Clasificación ● Motivación.
Introducción a la programación en C
Unidad 2: Organización del CPU
Características de “C”
Características de “C” Y Esta conformado por un Ambiente Integrado. Y Es un Lenguaje de Nivel medio. Y Es un compilador. YContiene un conjunto de palabras.
M.C. Meliza Contreras González
Procesadores del Lenguaje
Unidad III Elementos del lenguaje C++
Análisis de Algoritmos
FUNDAMENTOS DE PROGRAMACION
INGENIERIA EN SISTEMAS COMPUTACIONALES
TABLAS Definición. El tipo tabla permite definir objetos formados por un conjunto de elementos del mismo tipo. Ejemplos. El tipo tabla se utiliza para.
Introducción al análisis de algoritmos
Capítulo 1 “Elementos de Programación”
Resumen de Compilación Preparado por Manuel E. Bermúdez, Ph.D. Associate Professor University of Florida Traducido por Christian Torres Universidad Ricardo.
Resolución de Problemas y Algoritmos Uso de iteración con secuencias
Sesión 5 Sentencias de Selección y repetición Prof:Eridan Otto Programación de Computadores Lenguaje Pascal.
Administración de Proyectos de desarrollo de Software Ciclo de vida de un proyecto Enfoque moderno Temas Componentes Directivas Declaraciones globales.
Tecnólogo en Informática Estructura de Datos y Algoritmos.
Procesadores de Lenguajes
Introducción al Análisis Sintáctico
Teoría – Alejandro Gonzalez
Figure: Algoritmos Conceptos básicos. Programación: 1.Establecer una secuencia de acciones que: puedan ser ejecutadas por el procesador realicen una.
Elementos básicos del lenguaje
Programación de Sistemas
Tema 1. Introducción y Conceptos Básicos
LENGUAJE “C” Programación. Condicionales Los condicionales permiten al programa escoger entre varios posibles resultados dependiendo de la evaluación.
Elementos básicos del lenguaje
INFORMATICA VII (Programación e implementación de sistemas)
Unidad 1. Introducción a los Compiladores.
Tipo de Errores.
Teoría de lenguajes y compiladores
CARACTERÍSTICAS Es un lenguaje de programación estructurado de propósito general. Está estrechamente asociado al sistema operativo UNIX, ya que el propio.
ESCUELA NORMAL “PROF. DARÍO RODRÍGUEZ CRUZ” Licenciatura en educación preescolar Alumnas: *Mayra * Monserrat * Idalia *Cinthia Curso: las TIC en la educación.
PRINCIPIOS DE PROGRAMACIÓN
LENGUAJE “C” Programación.
Unidad Central de Proceso
Es un tipo especial de software que nos permite *Crear *Desarrollar *Programar otras aplicaciones. Haciendo uso de sus conocimientos lógicos y lenguajes.
Programación de Sistemas
FUNDAMENTOS DE PROGRAMACIÓN
CENTRO UNIVERSITARIO UAEM TEXCOCO INGENIERÍA EN COMPUTACIÓN
Características de “C” Esta conformado por un Ambiente Integrado. Es un Lenguaje de Nivel medio.Es un compilador. Contiene un conjunto de palabras reservadas.
Autómatas y Compiladores. Primera Semana. Ricardo Vargas Del Valle A35469.
Backpatching. Lista de saltos de salida Todas las instrucciones tienen una lista de saltos de salida. Son instrucciones JMx a las cuales no se les ha.
Transcripción de la presentación:

Lectura 4: Compilación e Interpretación B. Universidad Autónoma de Puebla Algoritmos y Programación Primavera de 2006 Lectura 4: Compilación e Interpretación Javier M. Hernández FCFM

Del Código Fuente al Código Ejecutable program gcd(input, output); var i, j: integer; begin read(i, j); while i <> j do if i > j then i := i – j; else j := j – i; writeln(i) end. Compilación Compiler translate high-level source program intro an equivalent target program

Compilando un Programa Un programa llamado un “compilador” se usa para traslada su “programa fuente” (en un lenguaje como C++) hacia un“programa objeto” (en el lenguaje de máquina de su sistema). ANALISIS LEXICO Divide el programa fuente en palabras como “void”, “x”, “>”, y “;”. PARSING Analize la sintaxis gramatical del programa fuente (e.g., “if (x > y)” tiene sentido, pero “if (x > ) y” no). GENERACION DEL CODIGO Generate un programa equivalente en lenguaje de máquina. #include <iostream.h> void main() { int x, y; cout << “Enter two integers: ”; cin >> x >> y; if (x > y) cout << x << “ is the largest!”; else cout << y << “ is the largest!”; return; } 110101000101100011000010010110110100010101011110010101011100000010011100101011001110101010111001010100101010101000000110110111011101010100111110101010101001001001010000010101010101000000101111100101100001011101010101010100010101111110010100100100101000 Programa Fuente Programa Objeto COMPILACION

Compilación e Interpretación Un compilador es un programa que translada programas fuente de alto nivel en programas blanco Un interprete es un programa que ejecuta otro programa Interpretation leads to greater flexibility and better diagnostics. Late binding in language that can create new pieces of code during execution and execute them Compilation leads to better performance.

Mezclando Compilación e Interpretación Diferencia difusa: Un lenguaje es interpretado cuando la traducción inicial es simple Un lenguaje es compilado cuando el proceso de traduccion es complicado Java as an example

Preprocesamiento Macros #define <macro> <replacement name> #define FALSE 0 #define max(A,B) ( (A) > (B) ? (A):(B)) Token substitution: use a C example on the board Linking is ubiquitous

Linking Bibliotecas de subrutinas Java API

Linking y carga CODIGO EJECUTABLE Programa unido Programas Biblioteca Después de ser compilado, el programa objeto debe ser “linked (unido)” (i.e., conectado a otro código compilado de las bibliotecas, como funciones matemáticas u operadores input/output) y entonces “loaded (cargado)” en la memoria principal para su ejecución. Programa fuente Programa objeto Programa unido COMPILAR CODIGO EJECUTABLE LINK Programas Biblioteca compiladas CARGAR

Portabilidad Lenguaje en lugar de lenguaje de máquina Código fuente intermedio

Ambiente de Programación Mucho mas que compiladores e interpretes Assemblers, debuggers, preprocesadores y linkers Editores Impresion embellecida Verificación de estilo Manejo de versiones Ambientes integrados Mas allá de un simple bus error Emacs ? Look for tools you may need

Vistazo de la Compilación program gcd(input, output); var i, j: integer; begin read(i, j); while i <> j do if i > j then i := i – j; else j := j – i; writeln(i) end. Compilación

Fases de la Compilación

Ejemplo Lenguaje de calculadora de mesa Programa de ejemplo: read A read B sum := A + B write sum write sum / 2 Explain the notation

Análisis Léxico Tokens: literal = digit digit * id = letter ( letter | digit ) * [ except "read" and "write" ] literal = digit digit * ":=", "+", "-", "*", "/", "(", ")“ $$$ [end of file]

Análisis Sintáctico Gramática en EBNF <pgm> -> <statement list> $$$ <stmt list> -> <stmt list> <stmt> | E <stmt> -> id := <expr> | read <id> | write <expr> <expr> -> <term> | <expr> <add op> <term> <term> -> <factor | <term> <mult op> <factor <factor> -> ( <expr> ) | id | literal <add op> -> + | - <mult op> -> * | / Precedence

Generación de código Código Intermedio: read pop A pop B push A push B add pop sum push sum write push 2 div

Generación de código Código Blanco: .data A: .long 0 B: .long 0 sum: .long 0 .text main: jsr read movl d0,d1 movl d1,A jsr read movl d1,B movl A,d1

Generación de código movl B,d2 addl d1,d2 movl d1,sum movl sum,d1 movl d1,d0 jsr write movl #2,d2 divsl d1,d2