General purpose intermediate representation of software for software development tools
First Claim
1. One or more computer-readable media having encoded thereon a computer-readable data structure storing an intermediate representation of software, the data structure comprising:
- 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.
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.
-
Citations
46 Claims
-
1. One or more computer-readable media having encoded thereon a computer-readable data structure storing an intermediate representation of software, the data structure comprising:
-
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. - 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 a computer-readable data structure comprising:
-
an intermediate representation of software derived from source code; and
annotations for a plurality of analyses of the software, wherein a single format accommodates the annotations. - View Dependent Claims (17, 18, 19)
-
-
20. One or more computer-readable media having encoded thereon a computer-readable data structure storing an intermediate representation of software, the data structure comprising:
-
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;
for at least one of the instruction nodes, 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;
one or more links explicitly representing control flow for the software, wherein the control flow includes exception handling control flow;
one or more links explicitly representing data flow for the software;
information associated with at least one operand node indicating alias information for a variable associated with the operand node; and
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 format, the method comprising:
-
conducting an analysis of the data structure; and
based on the analysis, taking an action without changing the format;
wherein the 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;
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)
-
-
44. A method of representing software, the method comprising:
-
representing each instruction and data element in a single format; and
representing each instruction as a data flow operation effected by execution of the instruction. - View Dependent Claims (45)
-
-
46. 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 format operable to represent software in a machine-independent and a machine-dependent manner.
-
Specification