General purpose intermediate representation of software for software development tools
First Claim
Patent Images
1. One or more computer-readable media having encoded thereon computer executable instructions for performing a method to generate an intermediate representation of software, the method comprising:
- storing, in a data structure, a plurality of instruction nodes representing a plurality of instructions of the software;
wherein the instruction nodes are operable to represent the instructions in a machine-dependent manner and are further operable to represent the instructions in a machine-independent manner, using a single uniform format for both the instructions represented in the machine-dependant manner and the instructions represented in the machine-independent manner.
2 Assignments
0 Petitions
Accused Products
Abstract
Various intermediate representation techniques for software development tool scenarios are described. An intermediate representation format can be used for both high level and low level representations. The intermediate representation can be built from various operands and instructions types. Various annotations can be added to the intermediate representation without modifying its format. For example, flow control and data control can be explicitly represented by threading a graph through the intermediate representation.
109 Citations
45 Claims
-
1. One or more computer-readable media having encoded thereon computer executable instructions for performing a method to generate an intermediate representation of software, the method comprising:
-
storing, in a data structure, a plurality of instruction nodes representing a plurality of instructions of the software; wherein the instruction nodes are operable to represent the instructions in a machine-dependent manner and are further operable to represent the instructions in a machine-independent manner, using a single uniform format for both the instructions represented in the machine-dependant manner and the instructions represented in the machine-independent manner. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15)
-
-
16. One or more computer-readable media having encoded thereon computer executable instructions for performing a method comprising:
-
generating an intermediate representation of software derived from source code; and generating annotations for a plurality of analyses of the software, wherein a single format accommodates the annotations, and wherein the single format is operable to represent instructions of the intermediate representation in a machine-dependent manner and a machine-independent manner. - View Dependent Claims (17, 18, 19)
-
-
20. One or more computer-readable media having encoded thereon computer executable instructions for performing a method to generate an intermediate representation of software, the method comprising:
-
storing, in a data structure, a plurality of instruction nodes representing a plurality of instructions of the software, wherein at least one of the instruction nodes represents a control flow instruction and at least one of the instruction nodes represents an opcode, and wherein the plurality of instruction nodes are operable to represent the plurality of instructions in a machine-dependent manner and are further operable to represent the plurality of instructions in a machine-independent manner using a single uniform format for both the plurality of instructions represented in the machine-dependent manner and the plurality of instructions represented in the machine-independent manner; for at least one of the instruction nodes, storing, in the data structure, one or more source operand nodes and one or more destination operand nodes, wherein at least one of the operand nodes represents a memory location and at least one of the operand nodes represents a label; storing, in the data structure, one or more links explicitly representing control flow for the software, wherein the control flow includes exception handling control flow; storing, in the data structure, one or more links explicitly representing data flow for the software; storing, in the data structure, information associated with at least one operand node indicating alias information for a variable associated with the operand node; and storing, in the data structure, at least one data instruction node of a same format as the instruction nodes but storing non-instruction data for the software. - View Dependent Claims (21)
-
-
22. A system for software development, the system comprising:
-
means for representing software; and means for analyzing the means for representing to analyze the software represented thereby; wherein the means for representing is of a single format operable to represent the software in a machine-independent and a machine-dependent manner.
-
-
23. A method of processing a data structure storing an intermediate representation of software for a compiler, wherein the intermediate representation is of a single format, the method comprising:
-
conducting an analysis of the data structure; and based on the analysis, taking an action without changing the single format; wherein the single format is operable to represent the software in a machine-dependent and a machine-independent manner. - View Dependent Claims (24, 25, 26, 27, 28)
-
-
29. A method of processing a data structure encoded on one or more computer-readable media, wherein the data structure comprises a plurality of nodes, the method comprising:
-
starting at one of the nodes within the data structure; and traversing to another of the nodes within the data structure; wherein; the data structure stores an intermediate representation of software using a single uniform format to represent both a machine-dependent and a machine-independent form of the software; the data structure comprises a plurality of nodes representing instructions of the software; and at least one node representing an instruction is associated with one or more source operands and one or more destination operands. - View Dependent Claims (30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42)
-
-
43. A method of representing software, the method comprising:
-
representing each instruction and data element in a single format operable to represent each instruction and data element of the software in a machine-independent and a machine-dependent manner; and representing each instruction as a data flow operation effected by execution of the instruction. - View Dependent Claims (44)
-
-
45. A software development environment comprising:
-
one or more software development tools encoded on one or more computer-readable media; wherein the software development tools are operable to generate or analyze an intermediate representation of software of a single format operable to represent software in a machine-independent and a machine-dependent manner.
-
Specification