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.

Slides:



Advertisements
Presentaciones similares
Estructuras de control
Advertisements

Entendiendo la definición de clases
Iteración La iteración permite modelar problemas en los cuales una secuencia de instrucciones debe ejecutarse varias veces. La cantidad de iteraciones.
Type tipo_bf = ; tipo_dato = word; tipo_puntero = ^tipo_nodo; tipo_nodo = record dato: tipo_dato; izquierdo, derecho: tipo_puntero; bf: tipo_bf;
INSTTUTO TECNOLOGICO DE APIZACO
Estructuras de control
Seminario de Actualización - Excel Avanzado y Macros
9A9A9A9A Grado en Ingeniería Informática Grado en Ingeniería del Software Grado en Ingeniería de Computadores Luis Hernández Yáñez Facultad de Informática.
INFORMATICA I Funciones CLASE 13.
PROGRAMACION DE Pilas o Stacks y Colas
FORTRAN 77 y Cómputo Científico
EXCEPCIÓN DE ERRORES.
ANALISIS SINTACTICO DESCENDENTE
Estructuras de control
Abstracción de Datos La abstracción es un recurso fundamental en la programación orientada a objetos y está además fuertemente ligado a reusabilidad.
Estructuras de Datos Especificación formal de Listas.
Recursión Se dice que un método es recursivo si forma parte de sí mismo o se define en función de sí mismo. La recursión es un medio particularmente poderoso.
Estructuras dinámicas de datos, TAD Lista, parte 2
APLICACIONES DE PILAS Estructuras de Datos.
Compiladores II ( /04/ :03) Tema 2. Generación de Código para Estructuras Complejas Lecciones 3 y 4.
TÉCNICO EN PROGRAMACIÓN DE SOFTWARE Instructor: Ingeniero Adrián Guerrero Taborda
Estructuras de Control Iterativas
Programación orientada a objetos
1 LENGUAJES LOGICOS IMPLEMENTACION CALCULO DE PREDICADOS PROLOG.
C++ LISTAS C++ 11/04/2017 Ing. Edgar Ruiz Lizama.
Programación III Clase 07 Funciones.
Coloración de Grafos Planos
Instituto Tecnologico de Durango Programacion de Sistemas II
Procesadores del Lenguaje
Compiladores II ( /07/ :06) Compiladores II Tema 1. Código Intermedio Lecciones 1 y 2.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Objetos.
Programación III Clase 06 Funciones.
Control de flujo: Bucles
Capítulo 1 “Elementos de Programación”
Conversión cadena a número
Capítulo 2 – Estructuras de Control
Valor X Valor Y Punto (0,0) Coordenadas.
Sesión 5 Sentencias de Selección y repetición Prof:Eridan Otto Programación de Computadores Lenguaje Pascal.
Computación II Repaso de java Karina Figueroa Mora.
Else Elseif en PHP Programación en Internet II. Else Elseif en PHP Programación en Internet II Universidad de Guadalajara | Centro Universitario de la.
Clase 2 Gabriela Araya Baez.  Permite la ejecución de un bloque de instrucciones, mediante la verificación de una condición. Si esta no se cumple (else),
Lectura 4: Compilación e Interpretación
Pilas y Colas Estructuras de Datos.
Resumen Fundamentos de Programación/ Programación I
Estructuras de Control.
Pilas Una Pila es una colección de elementos del mismo tipo organizada como una superposición ordenada de los mismos. Por ejemplo Pila de platos, Pila.
Programación Básica con “NQC” Pedro F. Toledo – Patricio Castillo 18/08/2006.
FUNCIONES Conceptos básicos. Retorno de una función Clases de funciones. Paso de parámetros. Funciones y arrays.
PILAS Una pila es una estructura de datos o lista de elementos, a la cual se le puede insertar o eliminar su contenido sólo por uno de sus extremos, llamado.
Recursividad (2 clases) 1. Nivelación Funciones Menú Vectores String
2008 Escuela de Informática y Telecomunicaciones, DuocUC Escuela de Informática y Telecomunicaciones Clase 8: Control del flujo en BASH Nombre unidad de.
Universidad Metropolitana de Educación, Ciencia y Tecnología Visual Fox Programación I.
COMPUTO III Ing. Jimmy Ojeda Arnica.
PEDRO ALBERTO ARIAS QUINTERO. El shell es un intérprete de órdenes, los intérpretes de órdenes de Linux son auténticos lenguajes de programación. Como.
Estructuras de datos Fundamentos de análisis y diseño de algoritmos.
29/5/2002 Sesión 18 Tipos de datos Estruturados Archivos de Caracteres Prof:Eridan Otto Programación de Computadores Lenguaje Pascal.
Listas. Utilización de un TAD Lista. Interfaz del TAD LISTA public interface Lista { void crearNodo (); /*Crea un nuevo nodo en el TadLista*/ int devolverClave.
Estructuras de Decisión
PROGRAMACION DE Pilas o Stacks
int cantidad, horas, cuota; float precio, peso; cantidad = 5; // Le asigno un número a la variable Cantidad; horas = // Le asigno 30 a la variable.
Segundo Grado Grupo Celeste Educación Física Instrucciones Pagina Siguiente Pagina Anterior.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Tipo.
PROGRAMACION DE Pilas o Stacks y Colas
Listas Dinámicas.
Juego de dados. El Juego de dados consiste en un lanzamientos aleatorio en la cuál gana cierta cantidad de dinero de acuerdo a lo siguiente: Si la suma.
1 Métodos. 2 Un método es un conjunto de instrucciones definidas dentro de una clase, que realizan una determinada tarea y a las que podemos invocar mediante.
Camilo Andrés Salazar González FORTRAN.  Estructura program circulo Real :: r, area write (*,*) 'Escribe el radio r:' read (*,*) r area = *r*r.
DO - WHILE Trejo Mendoza Armando Isacc Díaz Jiménez Christian Alexis César Cerón Cortez Juárez reyes Jason Elihu Hernández Mera Rubén Hernández López José.
2012-BM5A. Unos tips antes de empezar: C# es Case Sensitive (sensible a mayúsculas) Pepe ≠ pepe ≠ pEpE Las asignaciones se hacen con “=” y las comparaciones.
LL=
Transcripción de la presentación:

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 asignado el parámetro.

Clase código void addInstruction(Ins,param) void addInstruction(Ins) int nextInstruction() backpatch

backpatch(int pos, int arg) JMxarg pos

backpatch(int pos) JMxnx pos nx=getNextInstruction

backpatch(LinkedList l, int arg) JMxarg l1l1 JMxarg l1l1 lnln JMxarg

backpatch(LinkedList l) JMxnx l1l1 JMxnx l1l1 lnln JMxnx nx=getNextInstruction

Traducción de Is Is  I ( ; I) * Al encontrar “;” sabe que acaba de traducir una instrucción que puede haber dejado saltos.

Traducción de while I  while ( E) do Is od I Se debe marcar el principio de la condición Al encontrar do sabe que acaba de traducir una condición que tiene como efecto dejar true o false en el tope de la pila. Se agrega una instrucción, JMPF que es el único punto de salida Despues de traducir Is hay que rellenar los saltos con el principio de la condición. Además hay que agregar otra condición de salida

Traducción de If else I  If ( E) then Is 1 else Is 2 fi Al encontrar then sabe que acaba de traducir una condición que tiene como efecto dejar true o false en el tope de la pila. Se agrega una instrucción, JMPF que es el salto a las instrucciones Is 2. Despues de traducir Is 1 hay que agregar un salto (todavía indeterminado) para salirse de la instrucción. Esta instrucción hay que marcarla. En este punto ya se puede llenar el salto a false Los saltos de salido son los saltos de Is 1 y Is a de más el salto quese agregó después de Is 1.

Ejemplo X = read(); If (x < 0) then y = -x; Else y = x; Fi; Write (x) 0get 1Asgvar0 2Pushv0 3Push0 4EQ 5JMPF? FalseJump = 5

Ejemplo X = read(); If (x < 0) then y = -x; Else y = x; Fi; Write (x) 0get 1Asgvar0 2Pushv0 3Push0 4LT 5JMPF? 6Pushv0 7Chgsgn 8Asgmem1 9Jmp? FalseJump = 5 EndIf = [9]

Ejemplo X = read(); If (x < 0) then y = -x; Else y = x; Fi; Write (x) 0get 1Asgvar0 2Pushv0 3Push0 4LT 5JMPF? 6Pushv0 7Chgsgn 8Asgmem1 9Jmp? FalseJump = 5 EndIf = [9] Backpatcj(falseJump)

Ejemplo X = read(); If (x < 0) then y = -x; Else y = x; Fi; Write (x) 0get 1Asgvar0 2Pushv0 3Push0 4JMPF9 5Pushv0 6Chgsgn 7Asgmem1 8Jmp? FalseJump = 4 EndIf = [8] Backpatch(falseJump)

Ejemplo X = read(); If (x < 0) then y = -x; Else y = x; Fi; Write (x) 0get 1Asgvar0 2Pushv0 3Push0 4JMPF9 5Pushv0 6Chgsgn 7Asgmem1 8Jmp? 9Pushv0 10Asgmem2 EndIf = [8]Backpatch(EndIf)

Ejemplo X = read(); If (x < 0) then y = -x; Else y = x; Fi; Write (x) 0get 1Asgvar0 2Pushv0 3Push0 4JMPF9 5Pushv0 6Chgsgn 7Asgmem1 8Jmp11 9Pushv0 10Asgmem2 11Pushv0 12put EndIf = [8]Backpatch(EndIf)