La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Lectura 4: Compilación e Interpretación

Presentaciones similares


Presentación del tema: "Lectura 4: Compilación e Interpretación"— Transcripción de la presentación:

1 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

2 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

3 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; } Programa Fuente Programa Objeto COMPILACION

4 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.

5 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

6 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

7 Linking Bibliotecas de subrutinas Java API

8 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

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

10 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

11 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

12 Fases de la Compilación

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

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

15 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

16 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

17 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

18 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


Descargar ppt "Lectura 4: Compilación e Interpretación"

Presentaciones similares


Anuncios Google