Análisis de flujo de datos en Compiler

Es el análisis de flujo de datos en el gráfico de flujo de control, es decir, el análisis que determina la información sobre la definición y el uso de datos en el programa. Con la ayuda de este análisis, se puede realizar la optimización. En general, su proceso en el que los valores se calculan mediante análisis de flujo de datos. La propiedad de flujo de datos representa información que se puede utilizar para la optimización. 

Terminologías básicas – 
 

  • Punto de definición: un punto en un programa que contiene alguna definición.
  • Punto de referencia: un punto en un programa que contiene una referencia a un elemento de datos.
  • Punto de evaluación: un punto en un programa que contiene evaluación de expresión.

Propiedades de flujo de datos: 
 

  • Expresión disponible: se dice que una expresión está disponible en un punto de programa x si a lo largo de las rutas llega a x. Una expresión está disponible en su punto de evaluación. 
    Se dice que una expresión a+b está disponible si ninguno de los operandos se modifica antes de su uso. 

    Ejemplo – 
     

  • Ventaja: 
    se utiliza para eliminar subexpresiones comunes. 

     

  • Alcanzar la definición: una definición D alcanza un punto x si hay un camino desde D hasta x en el que D no se elimina, es decir, no se redefine. 

    Ejemplo – 
     

  • Ventaja – 
    Se utiliza en propagación constante y variable. 

     

  • Variable en vivo: se dice que una variable está en vivo en algún punto p si desde p hasta el final, la variable se usa antes de que se redefina; de lo contrario, se vuelve inactiva. 

    Ejemplo – 
     

  • Ventaja – 

    1. Es útil para la asignación de registros.
    2. Se utiliza en la eliminación de código muerto.
  • Expresión ocupada: una expresión está ocupada a lo largo de una ruta si su evaluación existe a lo largo de esa ruta y ninguna de sus definiciones de operandos existe antes de su evaluación a lo largo de la ruta. 

    Ventaja: 
    se utiliza para realizar la optimización del movimiento de código. 
     

Publicación traducida automáticamente

Artículo escrito por Ankit87 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *