A method of generating a program control flow definition from the program code determines entry points in the program. The code is followed, or scanned, from an entry point to a branch or jump instruction, or control flow instruction. A code block is then defined as the code from the entry point up to and including the control flow instruction. From the control flow instruction, additional entry points are identified. This is repeated for each entry point having a known value, resulting in a partial control flow definition. For entry points having unknown values, a constant propagation analysis is performed on the partial control flow definition to convert unknown entry point values to known values. Finally, the entry points determined by the constant propagation analysis are used as starting points in the scanning step to define additional entry points. The steps of scanning from known block entry points to determine additional points and using constant propagation for determining additional block entry points for unknown values are repeated to extend the control flow definition. Constant propagation is only used when there are no known block entry points. Heuristics may be used to determine certain unknown values. In addition, a knowledge of the operating system under which the program is running may be used to determine certain unknown values. A preferred embodiment is implemented with a block worklist which comprises a list of all known blocks within the program and which defines the partial control flow for the computer program during analysis, and the complete control flow upon completion of analysis. A block entry worklist comprises a list of all known block entry points whose blocks are unknown, such that each block entry point in the block entry worklist is analyzed.

Un método de generar una definición del flujo del control de programa del código del programa determina puntos de entrada en el programa. El código se sigue, o se explora, de un punto de entrada a una instrucción del rama o de salto, o a la instrucción del flujo del control. Un bloque del código entonces se define como el código del punto de entrada hasta y de incluir la instrucción del flujo del control. De la instrucción del flujo del control, se identifican los puntos de entrada adicional. Esto se repite para cada punto de entrada que tiene un valor conocido, dando por resultado una definición parcial del flujo del control. Para los puntos de entrada que tienen valores desconocidos, un análisis constante de la propagación se realiza en la definición parcial del flujo del control para convertir valores desconocidos del punto de entrada a los valores conocidos. Finalmente, los puntos de entrada determinados por el análisis constante de la propagación se utilizan como puntos de partida en el paso de la exploración para definir puntos de entrada adicional. Los pasos de la exploración de puntos de entrada sabidos del bloque para determinar puntos adicionales y de usar la propagación constante para determinar los puntos de entrada adicionales del bloque para los valores desconocidos se repiten para ampliar la definición del flujo del control. La propagación constante se utiliza solamente cuando no hay puntos de entrada sabidos del bloque. La heurística se puede utilizar para determinar ciertos valores desconocidos. Además, un conocimiento del sistema operativo bajo el cual el programa está funcionando se puede utilizar para determinar ciertos valores desconocidos. Una encarnación preferida se pone en ejecucio'n con un worklist del bloque que abarque una lista de todos los bloques sabidos dentro del programa y que defina el flujo parcial del control para el programa de computadora durante análisis, y el flujo completo del control sobre la terminación del análisis. Un worklist de la entrada del bloque abarca una lista de todos los puntos de entrada sabidos del bloque que bloques sean desconocidos, tales que cada punto de entrada del bloque en el worklist de la entrada del bloque está analizado.

 
Web www.patentalert.com

< (none)

< Methods for high throughput chemical screening using magnetic resonance imaging

> Power supply for implantable device

> (none)

~ 00018