Compiladores e intérpretes

Slides:



Advertisements
Presentaciones similares
Ejemplo Práctico de un Compilador Pequeño
Advertisements

Compiladores e intérpretes Generación de código intermedio II
Programación de Computadores
Cb00843 Traductores Rogelio Dávila Pérez Profesor Planta
¿Compilador ? Es un traductor que convierte un texto escrito en un lenguaje fuente y lo traduce a un programa objeto en código máquina.
III - Gestión de memoria
Prototipo de compilador didáctico del lenguaje LC99
TEMA 2 Arquitectura de un Ordenador
LENGUAJES DE PROGRAMACIÓN
INSTITUTO TECNOLOGICO DE APIZACO Integrantes del equipo: José Luis Cocoletzi López Edgar Lozano Velázquez TEMA: Lenguaje Ensamblador.
UNIDAD II: ALGORITMOS Y LENGUAJES
OPTIMIZACION DE CODIGO
MANUAL EXPRESS DE C J.M.sevilla.
INSTTUTO TECNOLOGICO DE APIZACO
Unidad 1. Introducción al proceso de compilación.
Procesos de cálculo manual y automático. Esquema del funcionamiento de una instrucción.
El procesador: la ruta de datos y el control (II Parte)
Practico PIC Programa Sumador.
Pablo Cesar Tapia Catacora
Tema 3. Optimización de Código
Composición Interna de un Procesador
Tema 6. Conceptos básicos de programación
Compiladores II ( /04/ :03) Tema 2. Generación de Código para Estructuras Complejas Lecciones 3 y 4.
CLASE 11.
Lenguaje Ensamblador integrantes: Esthela Vianey Vázquez Medina No.30
ISA (Instruction Set Architecture)
TRADUCTOR DE UN PROGRAMA
MODOS DE DIRECCIONAMIENTO No. Lista 21 7am Rivas chacón Ana cristina
MODOS DE DIRECCIONAMIENTO
Lenguaje C.
MIPS Intermedio.
PLANIFICACIÓN DINÁMICA DE INSTRUCCIONES
2.2 Registro de Banderas Conjunto de bits que nos dan información sobre el estado del procesador y sobre el resultado de la última operación efectuada.
Unidad 2: Organización del CPU
CONDICIONES DE LA MATERIA
M.C. Meliza Contreras González
PRINCIPIOS DE PROGRAMACION ESTRUCTURADA
(CC) , José M. Foces-Morán.

Organización del Computador I Verano MIPS (1 de 2) Basado en el capítulo 3 del libro de Patterson y Hennessy Verano 2004 Profesora Borensztejn.
Tema 1 Entorno de la programación. Conceptos elementales Algoritmo  Secuencia ordenada de pasos exentos de ambigüedad que conduce a la resolución de.
ARQUITECTURA DE COMPUTADORES Semestre A-2009 Clase 13.
Conceptos Arquitectónicos del computador
Lenguaje de Programación cap. 1 Estructura del Computador.
Procesadores de Lenguajes
LENGUAJES DE PROGRAMACIÓN
Programación de Sistemas
Lenguajes de programación. Lenguaje máquina El ordenador sólo sabe hacer un número limitado de tareas (muy pocas) definidas electrónicamente en su procesador.
MODOS Y METODOS DE DIRECCIONAMIENTO
Unidad 1. Introducción a los Compiladores.
Términos algoritmo diseñar algoritmo implementar algoritmo
LE, EI, Profesor Ramón Castro Liceaga UNIVERSIDAD LATINA (UNILA) TRADUCTORES Y ANALIZADOR LEXICOGRÁFICO.
1 Sebastián Argüello A60490 semana 3 Autómatas y compiladores CI-1322.
Capítulo 4 CPU y la memoria.
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.
ARQUITECTURA DE COMPUTADORES Semestre A-2009 Clase 10.

Unidad Central de Proceso
Tipos de Lenguajes Ensamblador.
ARQUITECTURAS DE LOS SERVIDORES El computador tiene 2 aspectos para entender su funcionamiento al nivel de programación: Almacenamiento Procesamiento Para.
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 Java y Desarrollo de Aplicaciones Modulo 1 Arquitectura de ordenadores Tema 3 Programas.
Programación de Sistemas
REGLAS PARA ELABORAR SEUDOCODIGOS Y DIAGRAMA DE FLUJO
MIPS Intermedio.
 PRESENTADO POR : ANDRES MAYORGA DANIELA PAEZ VEGA.
Prof. Jonathan Silva Ingeniería Civil – Informática I Ingeniería Civil Informática I Clase 3 – Diseño de Programas.
Lenguaje ensamblador Resumen en diapositivas
Omar Herrera Caamal Rigoberto Lizárraga Luis Cetina Luna.
P ROCESO DE E NSAMBLADO Cámara Vázquez Berenice Rubí.
Transcripción de la presentación:

Compiladores e intérpretes Generación de código Profesor: Eridan Otto

Generación de código Introducción Máquina objeto y juego de instrucciones Uso de ASA Uso de Notación Polaca Uso de códigos de tres direcciones

Compiladores e intérpretes Generación de código :Introducción Es un proceso de tradución de la representación intermedia a código objeto: Normalmente ensamblador, con referencias relativas a memoria. Se debe tener en cuenta la arquitectura de la máquina para realizar una gestión eficiente de la memoria y de los registros. Primero se generan las directivas para reservar memoria para las variables y los datos Por ejemplo, los árboles de sintaxis abstracta, se recorren para generar código directamente Hay que tener en cuenta Los lenguajes fuente y objeto Gestión de Memoria y de registros Juego de instrucciones Orden de evaluación

Compiladores e intérpretes Generación de código :Máquina Objeto y juego de instrucciones La familiaridad con la máquina objeto y su juego de instrucciones es un prerequisito para diseñar un buen generador de código Sin embargo, se para realizar una discusión sobre los principios básicos de la geneneración de código, se usa sólo un modelo genérico. El modelo es el siguiente: Direccionamiento de un byte relativo, es decir que se pueden usar símbolos para referirse a las direcciones en memoria. n Registros de CPU , R0, R1,...Rn-1 Todo programa parte en la dirección 0 y las instrucciones tienen la forma: [dirección] operador fuente, destino Donde operador es la instrucción en si que se ejecuta sobre las dos direcciones, dejendo el resultado en la dirección de destino: Fuente: dirección,constante(# seguida de un numro),registro Destino:dirección, registro. La idea es usar las variables temporales del código intermedio en los registros, de la manera más óptima posible, en la fase enterior Es más optimo hacer operaciones con un registro que con dos direciones de memoria

Compiladores e intérpretes Generación de código :Máquina Objeto y juego de instrucciones Juego de instrucciones: Mov , mueve fuente a destino Add, suma fuente y destino, dejando resultado en destino Sub, resta fuente al destino, dejando resultado en destino Mul, multiplica fuente y destino, dejando resultado en destino Div, resta fuente del destino, dejando resultado en destino Goto, salta a la dirección fuente Cj<rel>, salta a la dirección fuente si el resultado del último cálculo o movimiento a un registro es negativo, cero o positivo deacuerdo con: <rel>: <=, el resultado es negativo o 0 <rel>: =, el resultado es 0 <rel>: >=, el resultado es positivo o 0 <rel>: <, el resultado es negativo <rel>: >, el resultado es positivo <rel>: <>, el resultado no es 0

Compiladores e intérpretes Generación de código :Uso de Arboles de sintaxis Abstracta Para generar código, se debe recorrer en profundidad el árbol y por cada operación ir generando una instrucción en código de máquina. No olvidar los movimientos desde y hacia los registros. Las operaciones deben hacerse con al menos un registro. Intentar optimizar el ASA, antes de generar el código. Ejemplo: Genere código objeto a partir del siguiente ASA := := x + + x * * a a c c b b

Compiladores e intérpretes Generación de código :Uso de Arboles de sintaxis Abstracta Optimizando := := 1 Mov b, R0 2 Mul c,R0 /*en R0 b*c */ 3 mov R0,R1 4 add a,R1 /*en R1 a+b*c */ 5 Mov R1,x 6 Add #3,R0 /*en R0 3+b*c */ 7 Mov R0,y x + y + * 3 a c b

Compiladores e intérpretes Generación de código :Uso de notación polaca Uso práctico en expresiones matemáticas El código se genera cuando se encuentra el operador Ejemplo: SABC*+:= Pila Entrada Godigo Generado $ SABC*+:=$ $S ABC*+:=$ $SA BC*+:=$ $SAB C*+:=$ $SABC *+:=$ 1 mov C,R0 2 mult B,R0 $SA T1 +:=$ 3 Add A,R0 $ST2 :=$ 4 mov R0 S $ $

Compiladores e intérpretes Generación de código :Uso de códigos de tres direcciones Una vez derivados los cuartetos de la generación de código intermedio dirigida por sintaxis, derive el código de tercetos, para lo cual, derivar código final es casi directo. O derive manualmente los tercetos. Estrategias de generación de código a partir de tercetos. Ejemplos: Expresión tercetos codigo de máquina S:= A+ B * C (1) * B C (1) mov C,R0 (2) mul B,R0 (2) + A (1) (3) add, A,R0 (3) := (2) S (4) mov R0,S IF A<B THEN X:=B (1) < A B (1) mov A,R0 (2) sub B,R0 (2) IFF (4) (3) Cj>= (5) (3) := B X (4) mov B,X /*puede ser un bloque*/ (4) (,,) (5)

Compiladores e intérpretes Generación de código :Uso de códigos de tres direcciones Tercetos, ejemplos Expresión tercetos otra representación S:= A+ B * C (1) * B C (1) mov C,R0 (2) mul A,R0 X:= A+ B * C (2) + A (1) (3) add, A,R0 (3) := (2) S (4) mov R0,S (4) := (2) X (5) mov R0,X WHILE X<B DO (1) < X B (1) mov X,R0 X:=X+1; (2) mov R0,R1 (3) sub B,R0 (2) IFF (6) (4) cj>= (8) (3) + X 1 (5) add #1,R1 (4) := (3) X (6) mov R1,R0 (5) GOTO (1) (7) goto 3 (6) (8) En los ciclos se deben cuidar las variables que se ocupan en las expresiones