Claims Analysis
Total Claims: 18
Claim 1
Independent Claim
284 words
A method for translating a computer program using a programmable digital computer to a data flow graph, said computer program having a plurality of statements manipulating the value of a plurality of variables, and further having at least one conditional branching statement depending on the value of a data-dependent condition, the method comprising the steps operating on said computer of: converting said computer program into a control flow graph having a plurality of nodes including a start node and an end node, each node representing at least one of said plurality of statements, and including a conditional branch node for said data-dependent conditional branching statement; computing a set of reverse dominators for each of said plurality of nodes; deriving a meet point node for each conditional branch node in response to said reverse dominators; constructing a shadow symbol table having symbolic values for said variables; evaluating each node symbolically in succession according to control flow, and assigning a symbolic value to each said variables in said shadow symbol tables; evaluating said conditional branch node, constructing a duplicate shadow symbol table for each possible value of said data-dependent condition in response to said conditional branch node, assuming each possible value of said data-dependent condition and assigning symbolic values to each said variables in said duplicate shadow symbol tables; continue evaluating nodes contained in each branch of said conditional branching statement until said meet point node is reached; merging said duplicate shadow symbol tables at each said meet point node; complete evaluating all conditional branches and reaching said end node of said control flow graph; and generating a data flow graph with a conditional expression that is no longer data-dependent for each data-dependent conditional branching statement.
Claim 2
Independent Claim
284 words
A method for translating a computer program using a programmable digital computer to a data flow graph, said computer program having a plurality of statements manipulating the value of a plurality of variables, and further having at least one conditional branching statement depending on the value of a data-dependent condition, the method comprising the steps operating on said computer of: converting said computer program into a control flow graph having a plurality of nodes including a start node and an end node, each node representing at least one of said plurality of statements, and including a conditional branch node for said data-dependent conditional branching statement; computing a set of reverse dominators for each of said plurality of nodes; deriving a meet point node for each conditional branch node in response to said reverse dominators; constructing a shadow symbol table having symbolic values for said variables; evaluating each node symbolically in succession according to control flow, and assigning a symbolic value to each said variables in said shadow symbol tables; evaluating said conditional branch node, constructing a duplicate shadow symbol table for each possible value of said data-dependent condition in response to said conditional branch node, assuming each possible value of said data-dependent condition and assigning symbolic values to each said variables in said duplicate shadow symbol tables; continue evaluating nodes contained in each branch of said conditional branching statement until said meet point node is reached; merging said duplicate shadow symbol tables at each said meet point node; complete evaluating all conditional branches and reaching said end node of said control flow graph; and generating a data flow graph with a conditional expression that is no longer data-dependent for each data-dependent conditional branching statement.
Claim 3
Dependent Claim
41 words
The method, as set forth in claim 1, wherein said control flow graph converting step includes the step of providing a list of successor nodes for each said plurality of nodes, where said end node does not have any successor nodes.
Claim 4
Dependent Claim
120 words
The method, as set forth in claim 2, wherein said reverse dominator computing step includes the steps of: initializing a set of reverse dominator candidates for each node to include all of said nodes in said control flow graph, including each node itself; modifying the reverse dominator candidate set for said end node to include only the node itself; for each node, performing an intersection of its reverse dominator candidate set with the reverse dominator candidate sets of all of its successor nodes, adding the node itself, and producing a resultant reverse dominator candidate set; and repeating the above step until no changes in said reverse dominator candidate sets occur, and producing a resultant reverse dominator set for each node.
Claim 5
Dependent Claim
54 words
The method, as set forth in claim 3, wherein the step of deriving a meet point node for a conditional branch node includes the step of selecting a reverse dominator, from among its set of reverse dominators, excluding the node itself, one which is reverse dominated by all other reverse dominators in the set.
Claim 6
Dependent Claim
111 words
The method, as set forth in claim 1, wherein said merging step includes the steps of: using a conditional trinary expression: e1?e2:e3, where e1 is the data-dependent condition of the conditional branch node, e2 is the value of a variable if the condition were true, and e3 is the value of the variable if the condition were false; substituting the data-dependent condition for e1; substituting the symbolic values, assigned to variables in said duplicate shadow symbol table assuming a true condition for said data-dependent condition, for e2; and substituting the symbolic values, assigned to variables in said duplicate shadow symbol table assuming a false condition for said data-dependent condition, for e3.
Claim 7
Dependent Claim
47 words
The method, as set forth in claim 1, wherein said merging step includes the step of combining the values of said variables in said duplicate shadow symbol tables and specifying when each said values are assumed by the variables for each possible value of said data-dependent condition.
Claim 8
Dependent Claim
264 words
A translator for translating a computer program to a data flow graph where said computer program has at least one conditional branching statement leading to at least two branches assigning differing values to a variable depending on the value of a data-dependent condition, comprising: means for converting said algorithm into a control flow graph having a plurality of nodes, one of said nodes representing said conditional branch node; means for computing a set of reverse dominators for each of said plurality of nodes; means for deriving a meet point node where said branches of said conditional branching statement will converge, in response to said computed reverse dominators; means for constructing a shadow symbol table having said conditional expression and said variable; means for symbolically evaluating each node in said control flow graph in succession; means for evaluating said conditional branch node, and constructing one instance of said shadow symbol tables for each branch of said conditional branch node in response to evaluating said conditional branch node by assuming each possible value of said data-dependent condition; means for assigning symbolic values to said variable in said respective instances of said shadow symbol tables in response to evaluating each branch of said conditional branching statement until reaching said meet point node; means for merging said instances of said shadow symbol table upon reaching said meet point node; means for evaluating all conditional branches and reaching said end node of said control flow graph; means for generating a data flow graph with a conditional expression that is no longer data-dependent for each data dependent conditional branching statement.
Claim 9
Dependent Claim
264 words
A translator for translating a computer program to a data flow graph where said computer program has at least one conditional branching statement leading to at least two branches assigning differing values to a variable depending on the value of a data-dependent condition, comprising: means for converting said algorithm into a control flow graph having a plurality of nodes, one of said nodes representing said conditional branch node; means for computing a set of reverse dominators for each of said plurality of nodes; means for deriving a meet point node where said branches of said conditional branching statement will converge, in response to said computed reverse dominators; means for constructing a shadow symbol table having said conditional expression and said variable; means for symbolically evaluating each node in said control flow graph in succession; means for evaluating said conditional branch node, and constructing one instance of said shadow symbol tables for each branch of said conditional branch node in response to evaluating said conditional branch node by assuming each possible value of said data-dependent condition; means for assigning symbolic values to said variable in said respective instances of said shadow symbol tables in response to evaluating each branch of said conditional branching statement until reaching said meet point node; means for merging said instances of said shadow symbol table upon reaching said meet point node; means for evaluating all conditional branches and reaching said end node of said control flow graph; means for generating a data flow graph with a conditional expression that is no longer data-dependent for each data dependent conditional branching statement.
Claim 10
Dependent Claim
43 words
The translator, as set forth in claim 7, wherein said means for converting said control flow graph includes means for providing a list of successor nodes for each said plurality of nodes, and one end node which does not have any successor nodes.
Claim 11
Dependent Claim
119 words
The translator, as set forth in claim 8, wherein said reverse dominator computing means includes: means for initialing a set of reverse dominator candidates for each node to include all of said nodes in said control flow graph, including each node itself; means for modifying the reverse dominator candidate set for said end node without any successor nodes to include only itself; means for performing, for each node, an intersection of its reverse dominator candidate set with the reverse dominator sets of all of its successor nodes, adding the node itself, and producing a resultant reverse dominator candidate set, until no changes in said reverse dominator candidate sets occur, and producing a resultant reverse dominator set for each node.
Claim 12
Dependent Claim
44 words
The translator, as set forth in claim 9, wherein the means for deriving a meet point node includes means for selecting the reverse dominator, from among said sets of reverse dominator candidates for each node, one which reverse dominates all other reverse dominator candidates.
Claim 13
Dependent Claim
107 words
The translator, as set forth in claim 7, wherein said merging means uses a conditional trinary expression: e1?e2:e3, where e1 is the data-dependent condition of the conditional branch node, e2 is the value of a variable if the condition were true, and e3 is the value of the variable if the condition were false; substituting the data-dependent condition for e1; substituting the symbolic values, assigned to variables in said duplicate shadow symbol table assuming a true condition for said data-dependent condition, for e2; and substituting the symbolic values, assigned to variables in said duplicate shadow symbol table assuming a false condition for said data-dependent condition, for e3.
Claim 14
Dependent Claim
50 words
The translator, as set forth in claim 11, wherein said merging means further includes the step of combining the values of said variable in said instances of said shadow symbol tables and specifying when each said values are assumed by said variable for each possible value of said data-dependent condition.
Claim 15
Independent Claim
297 words
A method for generating hardware circuits from a computer program, said computer program having a plurality of statements manipulating the value of a plurality of variables, and further having at least one conditional branching statement depending on the value of a data-dependent condition, the method comprising the steps operating on said computer of: converting said computer program into a control flow graph having a plurality of nodes including a start node and an end node, each node representing at least one of said plurality of statements, and including a conditional branch node for said data-dependent conditional branching statement; computing a set of reverse dominators for each of said plurality of nodes; deriving a meet point node for each conditional branch node in response to said reverse dominators; constructing a shadow symbol table having symbolic values for said variables; evaluating each node symbolically in succession according to control flow, and assigning a symbolic value to each said variables in said shadow symbol tables; evaluating said conditional branch node, constructing a duplicate shadow symbol table for each possible value of said data-dependent condition in response to said conditional branch node, assuming each possible value of said data-dependent condition and assigning symbolic values to each said variables in said duplicate shadow symbol tables; continue evaluating nodes contained in each branch of said conditional branching statement until said meet point node is reached; merging said duplicate shadow symbol tables at each said meet point node; complete evaluating all conditional branches and reaching said end node of said control flow graph; and generating a data flow graph with a conditional expression that is no longer data-dependent for each data-dependent conditional branching statement; and the further step of generating hardware circuits for each said conditional expression from said resultant program data flow graph.
Claim 16
Independent Claim
297 words
A method for generating hardware circuits from a computer program, said computer program having a plurality of statements manipulating the value of a plurality of variables, and further having at least one conditional branching statement depending on the value of a data-dependent condition, the method comprising the steps operating on said computer of: converting said computer program into a control flow graph having a plurality of nodes including a start node and an end node, each node representing at least one of said plurality of statements, and including a conditional branch node for said data-dependent conditional branching statement; computing a set of reverse dominators for each of said plurality of nodes; deriving a meet point node for each conditional branch node in response to said reverse dominators; constructing a shadow symbol table having symbolic values for said variables; evaluating each node symbolically in succession according to control flow, and assigning a symbolic value to each said variables in said shadow symbol tables; evaluating said conditional branch node, constructing a duplicate shadow symbol table for each possible value of said data-dependent condition in response to said conditional branch node, assuming each possible value of said data-dependent condition and assigning symbolic values to each said variables in said duplicate shadow symbol tables; continue evaluating nodes contained in each branch of said conditional branching statement until said meet point node is reached; merging said duplicate shadow symbol tables at each said meet point node; complete evaluating all conditional branches and reaching said end node of said control flow graph; and generating a data flow graph with a conditional expression that is no longer data-dependent for each data-dependent conditional branching statement; and the further step of generating hardware circuits for each said conditional expression from said resultant program data flow graph.
Claim 17
Independent Claim
283 words
A method for compiling a computer program, said computer program having a plurality of statements manipulating the value of a plurality of variables, and further having at least one conditional branching statement depending on the value of a data-dependent condition, the method comprising the steps operating on said computer of: converting said computer program into a control flow graph having a plurality of nodes including a start node and an end node, each node representing at least one of said plurality of statements, and including a conditional branch node for said data-dependent conditional branching statement; computing a set of reverse dominators for each of said plurality of nodes; deriving a meet point node for each conditional branch node in response to said reverse dominators; constructing a shadow symbol table having symbolic values for said variables; evaluating each node symbolically in succession according to control flow, and assigning a symbolic value to each said variables in said shadow symbol tables; evaluating said conditional branch node, constructing a duplicate shadow symbol table for each possible value of said data-dependent condition in response to said conditional branch node, assuming each possible value of said data-dependent condition and assigning symbolic values to each said variables in said duplicate shadow symbol tables; continue evaluating nodes contained in each branch of said conditional branching statement until said meet point node is reached; merging said duplicate shadow symbol tables at each said meet point node; complete evaluating all conditional branches and reaching said end node of said control flow graph; generating a data flow graph with a conditional expression that is no longer data-dependent for each data-dependent conditional branching statement; and compiling said computer program using said data flow graph.
Claim 18
Independent Claim
283 words
A method for compiling a computer program, said computer program having a plurality of statements manipulating the value of a plurality of variables, and further having at least one conditional branching statement depending on the value of a data-dependent condition, the method comprising the steps operating on said computer of: converting said computer program into a control flow graph having a plurality of nodes including a start node and an end node, each node representing at least one of said plurality of statements, and including a conditional branch node for said data-dependent conditional branching statement; computing a set of reverse dominators for each of said plurality of nodes; deriving a meet point node for each conditional branch node in response to said reverse dominators; constructing a shadow symbol table having symbolic values for said variables; evaluating each node symbolically in succession according to control flow, and assigning a symbolic value to each said variables in said shadow symbol tables; evaluating said conditional branch node, constructing a duplicate shadow symbol table for each possible value of said data-dependent condition in response to said conditional branch node, assuming each possible value of said data-dependent condition and assigning symbolic values to each said variables in said duplicate shadow symbol tables; continue evaluating nodes contained in each branch of said conditional branching statement until said meet point node is reached; merging said duplicate shadow symbol tables at each said meet point node; complete evaluating all conditional branches and reaching said end node of said control flow graph; generating a data flow graph with a conditional expression that is no longer data-dependent for each data-dependent conditional branching statement; and compiling said computer program using said data flow graph.