Legal claims defining the scope of protection, as filed with the USPTO.
1. A method of recreating the execution of a program in a computing device, comprising: estimating one or more data values in one or more registers; using the estimated one or more data values to identify one or more operations performed by the program; recreating the execution of the program based on the estimated one or more data values and the identified one or more operations; performing a trace of the execution of the program; traversing the trace frown a beginning of the trace to an end of the trace; and replacing instances in the trace of register labels with unique labels during the traversal of the trace.
2. The method of claim 1 , wherein estimating one or more data values in one or more registers includes: processing the trace with the unique labels for the register labels in a reverse direction to estimate the one or more data values.
3. The method of claim 2 , further comprising: determining ifs branch in the trace is taken; and setting a value of a condition register for the branch based on whether or not the branch is taken.
4. The method of claim 1 , wherein replacing instances in the trace of register labels with unique labels includes replacing each load register name with a unique label and propagating the unique label of each load register throughout a live range of the remainder of the trace.
5. The method of claim 4 , wherein replacing instances in the trace of register labels with unique labels includes replacing each store register name with a unique label and propagating the unique label of each store register throughout a live range of the remainder of the trace.
6. The method of claim 5 , wherein the live range is a range of trace instructions occurring between load instructions to the same register.
7. The method of claim 5 , wherein replacing each store register name with a unique label includes checking to determine whether the store register references an existing memory address and label previously encountered during the traversal.
8. The method of claim 7 , wherein if the check indicates that the store register references an existing memory address and label, the existing label is used in replacement of the store register name.
9. The method of claim 5 , wherein replacing instances in the trace of register labels with unique labels includes generating a unique label for each destination register name in the trace.
10. The method of claim 9 , wherein replacing each load register name with a unique label and propagating the unique label of each load register throughout a live range of the remainder of the trace, replacing each store register name with a unique label and propagating the unique label of each store register throughout a live range of the remainder of the trace, and generating a unique label for each destination register name in the trace are performed in a single pass through the trace.
11. The method of claim 1 , wherein estimating one or more data values in one or more registers includes calculating register values for register indirect operations in the trace and setting corresponding registers with the calculated values.
12. The method of claim 3 , further comprising: propagating the value of the condition register up to a next branch in the trace; and calculating values for registers up to the next branch based on the value of the condition register.
13. The method of claim 12 , wherein calculating the values for registers up to the next branch includes using reverse operations to determine the values for the registers.
14. The method of claim 1 , wherein estimating one or more data values for one or more registers includes flattening a memory address space and temporary storage locations space into a single linear address space.
15. A computer program product recorded in a computer readable medium for recreating the execution of a program in a computing device, comprising: first instructions for estimating one or more data values in one or more registers; second instructions for using the estimated one or more data values to identify one or more operations performed by the program; third instructions for recreating the execution of the program based on the estimated one or more data values and the identified one or more operations; fourth instructions for performing a trace of the execution of the program; fifth instructions for traversing the trace from a beginning of the trace to an end of the trace; and sixth instructions for replacing instances in the trace of register labels with unique labels during the traversal of the trace.
16. The computer program product of claim 15 , wherein the first instructions for estimating one or more data values in one or more registers includes: instructions for processing the trace with the unique labels for the register labels in a reverse direction to estimate the one or more data values.
17. The computer program product of claim 16 , further comprising: fourth instructions for determining if a branch in the trace is taken; and fifth instructions for setting a value of a condition register for the branch based on whether or not the branch is taken.
18. The computer program product of claim 17 , further comprising: sixth instructions for propagating the value of the condition register up to a next branch in the trace; and seventh instructions for calculating values for registers up to the next branch based on the value of the condition resister.
19. The computer program product of claim 18 , wherein the seventh instructions for calculating the values for registers up to the next branch include instructions for using reverse operations to determine the values for the registers.
20. The computer program product of claim 15 , wherein the sixth instructions for replacing instances in the trace of register labels with unique labels include instructions for replacing each load register name with a unique label and instructions for propagating the unique label of each load register throughout a live range of the remainder of the trace.
21. The computer program product of claim 20 , wherein the sixth instructions for replacing instances in the trace of register labels with unique labels include instructions for replacing each store register name with a unique label and instructions for propagating the unique label of each store register throughout a live range of the remainder of the trace.
22. The computer program product of claim 21 , wherein the live range is a range of trace instructions occurring between load instructions to the same register.
23. The computer program product of claim 21 , wherein the instructions for replacing each store register name with a unique label include instructions for checking to determine whether the store register references an existing memory address and label previously encountered during the traversal.
24. The computer program product of claim 23 , wherein if the check indicates that the store register references an existing memory address and label, the existing label is used in replacement of the store register name.
25. The computer program product of claim 21 , wherein the sixth instructions for replacing instances in the trace of register labels with unique labels include instructions for generating a unique label for each destination register name in the trace.
26. The computer program product of claim 25 , wherein the instructions for replacing each load register name with a unique label and instructions for propagating the unique label of each load register throughout a live range of the remainder of the trace, instructions for replacing each store register name with a unique label and instructions for propagating the unique label of each store register throughout a live range of the remainder of the trace, and instructions for generating a unique label for each destination register name in the trace are executed in a single pass through the trace.
27. The computer program product of claim 15 , wherein the first instructions for estimating one or more data values in one or more registers include instructions for calculating register values for register indirect operations in the trace and instructions for setting corresponding registers with the calculated values.
28. The computer program product of claim 15 , wherein the first instructions for estimating one or more data values for one or more registers include instructions for flattening a memory address space and temporary storage locations space into a single linear address space.
29. A system for recreating the execution of a program in a computing device, comprising: means for estimating one or more data values in one or more registers; means for using the estimated one or more data values to identify one or more operations performed by the program; means for recreating the execution of the program based on the estimated one or more data values and the identified one or more operations; means for performing a trace of the execution of the program; means for traversing the trace from a beginning of the trace to an end of the trace; and means for replacing instances in the trace of register labels with unique labels during the traversal of the trace.
30. The system of claim 29 , wherein the means for estimating one or more data values in one or more registers includes: means for processing the trace with the unique labels for the register labels in a reverse direction to estimate the one or more data values.
31. The system of claim 29 , wherein the means for replacing instances in the trace of register labels with unique labels includes: means for replacing each load register name with a unique label; and means for propagating the unique label of each load register throughout a live range of the remainder of the trace.
32. The system of claim 31 , wherein the means for replacing instances in the trace of register labels with unique labels includes: means for replacing each store register name with a unique label; and means for propagating the unique label of each store register throughout a live range of the remainder of the trace.
33. The system of claim 32 , wherein the means for replacing instances in the trace of register labels with unique labels includes means for generating a unique label for each destination register name in the trace.
34. A method of tracing the execution of a program in a computing device, comprising: replacing register names for one or more registers in trace instructions with unique labels; propagating the unique labels through the trace instructions; determining a value for one or more branch condition registers in the trace instructions; propagating the value for the one or more branch condition registers through the trace instructions to calculate data values for the one or more registers; and assembling the data values for the one or more registers into an executable program.
Unknown
April 17, 2007
Browse 5M+ US patents with plain-English claim translations and AI-generated analysis.