En de informática, un gráfico de flujo de control del (CFG) es una representación, usar la notación del gráfico, de todas las trayectorias que se pudieron atravesar con un programa durante su ejecución . Cada nodo en el gráfico representa un bloque básico, es decir un pedazo de código rectilíneo sin ningunos saltos o blancos del salto; las blancos del salto comienzan un bloque, y los saltos terminan un bloque. Los bordes dirigidos se utilizan para representar saltos en el flujo de control. Hay, en la mayoría de las presentaciones, dos bloques especialmente señalados: el bloque de entrada del, a través de el cual el control entra en el gráfico de flujo, y el bloque de la salida del, a través de el cual todo el flujo de control se va.
El CFG es esencial para muchas optimizaciones de recopilador y las herramientas del análisis estático .
El Reachability es otra característica del gráfico útil en la optimización. Si un bloque/un subgráfico no está conectado del subgráfico que contiene el bloque de entrada, ese bloque es inalcanzable durante cualquier ejecución, y así que es el código inalcanzable ; puede ser quitado con seguridad. Si el bloque de la salida es inalcanzable del bloque de entrada, indica un bucle infinito (no todos los bucles infinitos son perceptibles, por supuesto. Ver el problema que para ). Una vez más el código muerto y algunos bucles infinitos son posibles incluso si el programador no cifró explícitamente esa manera: las optimizaciones como la propagación constante y el plegable constante seguido por el salto que roscaba podían derrumbarse los bloques básicos múltiples en uno, los bordes de la causa que se quitarán de un CFG, etc., así posiblemente desconectando las partes del gráfico.
; bloque de entrada del : bloque a través de el cual todo el flujo de control incorpora el gráfico ; bloque de la salida del : bloque a través de el cual todo el flujo de control deja el gráfico ; borde trasero del : un borde esos puntos a un antepasado en un profundidad-primer ( DFS ) traversal del gráfico ; borde crítico del : un borde que es ni el único borde que sale de su bloque de la fuente, ni el único borde que incorpora su bloque de la destinación. Estos bordes deben ser partidos (un nuevo bloque se debe crear en el medio del borde) para insertar cómputos en el borde. ; borde anormal del : un borde cuya destinación es desconocida. Estos bordes tienden a inhibir la optimización. Las construcciones de la dirección de excepción pueden producirlos. ; borde imposible del : (también conocido como borde de la falsificación del ) un borde que se ha agregado al gráfico solamente para preservar la característica que los postdominates todos del bloque de la salida bloquean. No puede ser atravesado nunca. ; Dominator : el del bloque M domina el bloque N de si cada trayectoria de la entrada que alcanza el bloque N tiene que pasar a través del bloque M. El bloque de entrada domina todos los bloques. ; postdominator del : bloque N de los postdominates bloque M si cada trayectoria de N a la salida tiene que pasar a través del bloque M. Los postdominates todos del bloque de la salida bloques. ; '' dominator inmediato '' : bloquear el de M domina inmediatamente el bloque N de si M domina N, y no hay bloque de intervención P tales que M domina P y P domina N. es decir M es el dominator pasado en cualquier trayectoria de la entrada al N. Cada bloque tiene un dominator inmediato único, si tiene cualesquiera en absoluto. ; postdominator inmediato del : Análogo al dominator inmediato del . ; '' árbol '' del dominator: Una estructura de datos ancilar que representa las relaciones del dominator. Hay un arco del bloque M para bloquear N si M es un dominator inmediato del N. Este gráfico es un árbol, puesto que cada bloque tiene un dominator inmediato único. Este árbol se arraiga en el bloque de entrada. Puede ser calculado eficientemente usar el algoritmo de Lengauer-Tarjan. ; árbol del postdominator del : Análogo al árbol del dominator del . Este árbol se arraiga en el bloque de la salida. ; jefe del lazo del : Llamó a veces el punto de entrada del del lazo, dominator que es la blanco de un borde trasero de lazo-formación. Domina todos los bloques en el cuerpo de lazo. ; pre-jefe del lazo del : Suponer que el bloque M es un dominator con varios bordes entrantes, algo de ellos que son bordes traseros (así que M es un jefe del lazo). Es ventajoso a varios pasos de la optimización romper M para arriba en dos bloques Mpre y Mloop. El contenido de M y de bordes traseros se mueve a Mloop, el resto de los bordes se traslada al punto a Mpre, y un nuevo borde de Mpre a Mloop se inserta (de modo que Mpre sea el dominator inmediato de Mloop). En el principio, Mpre sería vacío, pero los pasos como el movimiento Lazo-invariante del código podrían poblarlo. Mpre se llama el pre-jefe del lazo del, y Mloop sería el jefe del lazo.
0: (a) t0 = read_num 1: (a) si t0 == 0 4 indicados de la MOD 2 2: (b) impresión t0 + " es odd." 3: (b) 5 indicados 4: (c) impresión t0 + " es even." 5: (d) programa del finalEn el antedicho, tenemos 4 bloques básicos: A a partir de la 0 a 1, B a partir del 2 a 3, C en 4 y D en 5. particularmente, en este caso, A es el " block" de la entrada;, D el " salir el block" y las líneas 4 y 5 son blancos del salto. Un gráfico para este fragmento tiene bordes de A a B, A a C, B a D y C a D.
.
| Random links: | Natchez, Luisiana | Miguel Cotto | Astrosnik | Lista de líderes estatales en 1249 | NSIN |