G - Physics – 06 – F
Patent
G - Physics
06
F
G06F 9/45 (2006.01) G06F 9/44 (2006.01)
Patent
CA 2353442
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.
L'invention concerne un procédé permettant de générer une définition de flux de commande de programme à partir du code de programme, qui détermine des points d'entrée dans ledit programme. Le code est suivi, ou balayé, à partir d'un point d'entrée vers une instruction de branchement ou de saut, ou vers une instruction de commande de flux. Un bloc de code est ensuite défini, comme étant le code, à partir du point d'entrée vers l'instruction de commande de flux, et comprenant ladite instruction. Cette opération est répétée pour chaque point d'entrée possédant une valeur connue, résultant d'une définition partielle de flux de commande. Pour les points d'entrée présentant une valeur inconnue, une analyse de propagation constante est exécutée sur la définition partielle du flux de commande, afin de convertir des valeurs inconnues de point d'entrée en valeurs connues. Enfin, les points d'entrée déterminés par l'analyse de propagation constante sont utilisés comme points de départ de l'étape de balayage, afin de définir des points d'entrée supplémentaires. Les étapes de balayage, effectuées à partir des points d'entrée de bloc afin de déterminer des points supplémentaires, et utilisant une propagation constante pour déterminer des points d'entrée de bloc supplémentaires pour des valeurs inconnues, sont répétées de façon à étendre la définition de commande de flux. La propagation constante est utilisée uniquement lorsqu'ils n'existe pas de points d'entrée de bloc connus. La connaissance heuristique peut être utilisée pour déterminer certaines valeurs inconnues. En outre, une connaissance du système d'exploitation sur lequel le programme tourne peut être utilisée pour déterminer certaines valeurs inconnues. Un mode de réalisation préféré est mis en oeuvre avec une liste de travail de bloc qui comprend une liste de tous les blocs connus du programme, et qui définit le flux de commande partiel du programme informatique pendant une analyse, et le flux de commande complet lors de l'exécution de cette analyse. Une liste de travail d'entrées de bloc comprend une liste de tous les points d'entrée connus dont les blocs sont inconnus, de sorte que chaque point d'entrée de bloc de la liste de travail d'entrée de bloc est analysé.
Borden Ladner Gervais Llp
Incert Software Corporation
LandOfFree
A method for determining program control flow does not yet have a rating. At this time, there are no reviews or comments for this patent.
If you have personal experience with A method for determining program control flow, we encourage you to share that experience with our LandOfFree.com community. Your opinion is very important and A method for determining program control flow will most certainly appreciate the feedback.
Profile ID: LFCA-PAI-O-1929730