USRE38104E1 - Method and apparatus for resolving data references in generated code - Google Patents
Method and apparatus for resolving data references in generated code Download PDFInfo
- Publication number
- USRE38104E1 USRE38104E1 US09/261,970 US26197099A USRE38104E US RE38104 E1 USRE38104 E1 US RE38104E1 US 26197099 A US26197099 A US 26197099A US RE38104 E USRE38104 E US RE38104E
- Authority
- US
- United States
- Prior art keywords
- program
- symbolic
- instruction
- data
- instructions
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Lifetime
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/447—Target code generation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/54—Link editing before load time
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44521—Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45504—Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
- G06F9/45508—Runtime interpretation or emulation, e g. emulator loops, bytecode interpretation
Definitions
- the present invention relates to the field of computer systems, in particular, programming language compilers and interpreters of these computer systems. More specifically, the present invention relates to resolving references in compiler generated object code.
- a computer program compiles the source program and generates executable code for a specific computer architecture. References to data in the generated code are resolved prior to execution based on the layout of the data objects that the program deals with, thereby, allowing the executable code to reference data by their locations. For example, consider a program that deals with a point data object containing two variables x and y, representing the x and y coordinates of a point, and further assume that the variables x and y are assigned slots 1 and 2 respectively, in each instance of the point data object. Thus, an instruction that accesses or fetches y, such as the Load instruction 14 illustrated in FIG. 1, is resolved to reference the variable y by the assigned slot 2 before the instruction sequence is executed.
- Particular examples of programming language compilers that generate code and resolve data references in the manner described above include C and C++ compilers.
- a program may be constructed from a library and a main program. If a change is made to the library, such that the layout of one of the data objects it implements is changed, then clients of that library, like the main program, need to be recompiled. Continuing the preceding example, if the point data object had a new field added at the beginning called name, which contains the name of the point, then the variables x and y could be reassigned to slots 2 and 3 .
- Existing programs compiled assuming that the variables x and y and are in slots 1 and 2 will have to be recompiled for them to execute correctly.
- a computer program In an interpreted language, a computer program (called a translator) translates the source statements of a program into some intermediate form, typically independent of any computer instruction set. References to data in the intermediate form are not fully resolved before execution based on the layout of the data objects that the program deals with. Instead, references to data are made on a symbolic basis. Thus, an instruction that accesses or fetches y, such as the Load instruction 14 ′ illustrated in FIG. 1, references the variable y by the symbolic name “y”.
- the program in intermediate form is executed by another program (called an interpreter) which scans through the code in intermediate form, and performs the indicated actions. Each of the symbolic references is resolved during execution each time the instruction comprising the symbolic reference is interpreted.
- a particular example of a programming language interpreter that translates source code into intermediate form code and references data in the manner described above is the BASIC interpreter.
- the “interpreted” approach avoids the problems encountered with the “compiled” approach, when a program is constructed in pieces. However, because of the extra level of interpretation at execution time, each time an instruction comprising a symbolic reference is interpreted, execution is slowed significantly.
- the present invention provides a method and apparatus for resolving data references in compiler generated object code that achieves the desired results.
- a method and apparatus for generating executable code and resolving data references in the generated code is disclosed.
- the method and apparatus provides execution performance substantially similar to the traditional compiled approach, as well as the flexibility of altering data objects like the traditional interpreted approach.
- the method and apparatus has particular application to implementing object oriented programming languages in computer systems.
- a hybrid compiler-interpreter comprising a compiler for “compiling” source program code, and an interpreter for interpreting the “compiled” code, is provided to a computer system.
- the compiler comprises a code generator that generates code in intermediate form with data references made on a symbolic basis.
- the interpreter comprises a main interpretation routine, and two data reference handling routines, a static field reference routine for handling numeric references and a dynamic field reference routine for handling symbolic references.
- the dynamic field reference routine when invoked, resolves a symbolic reference and rewrites the symbolic reference into a numeric reference. After rewriting, the dynamic field reference routine returns to the interpreter without advancing program execution to the next instruction, thereby allowing the rewritten instruction with numeric reference to be reexecuted.
- the static field reference routine when invoked, obtain data for the program from a data object based on the numeric reference. After obtaining data, the static field reference routine advances program execution to the next instruction before returning to the interpreter.
- the main interpretation routine selectively invokes the two data reference handling routines depending on whether the data reference in an instruction is a symbolic or a numeric reference.
- the “compiled” intermediate form object code of a program achieves execution performance substantially similar to that of the traditional compiled object code, and yet it has the flexibility of not having to be recompiled when the data objects it deals with are altered like that of the traditional translated code, since data reference resolution is performed at the first execution of a generated instruction comprising a data reference.
- FIG. 1 shows the prior art compiled approach and the prior art interpreted approach to resolving data reference.
- FIG. 2 illustrates an exemplary computer system incorporated with the teachings of the present invention.
- FIG. 3 illustrates the software elements of the exemplary computer system of FIG. 2 .
- FIG. 4 illustrates one embodiment of the compiler of the hybrid compiler-interpreter of the present invention.
- FIG. 5 illustrates one embodiment of the code generator of the compiler of FIG. 4 .
- FIG. 6 illustrates one embodiment of the interpreter and operator implementations of the hybrid compiler-interpreter of the present invention.
- FIG. 7 illustrates the cooperative operation flows of the main interpretation routine, the static field reference routine and the dynamic field reference routine of the present invention.
- FIG. 8 illustrates an exemplary resolution and rewriting of a data reference under the present invention.
- a method and apparatus for generating executable code and resolving data references in the generated code is disclosed.
- the method and apparatus provides execution performance substantially similar to the traditional compiled approach, as well as the flexibility of altering data objects like the traditional interpreted approach.
- the method and apparatus has particular application to implementing object oriented programming languages.
- specific numbers, materials and configurations are set forth in order to provide a thorough understanding of the present invention.
- the present invention may be practiced without the specific details.
- well known systems are shown in diagrammatical or block diagram form in order not to obscure the present invention unnecessarily.
- the exemplary computer system 20 comprises a central processing unit (CPU) 22 , a memory 24 , and an I/O module 26 . Additionally, the exemplary computer system 20 also comprises a number of input/output devices 30 and a number of storage devices 28 .
- the CPU 22 is coupled to the memory 24 and the I/O module 26 .
- the input/output devices 30 , and the storage devices 28 are also coupled to the I/O module 26 .
- the I/O module 26 in turn is coupled to a network 32 .
- the CPU 22 the memory 24 , the I/O module 26 , the input/output devices 30 , and the storage devices 28 , are intended to represent a broad category of these hardware elements found in most computer systems. The constitutions and basic functions of these elements are well known and will not be further described here.
- the software elements of the exemplary computer system of FIG. 2 comprises an operating system 36 , a hybrid compiler-interpreter 38 incorporated with the teachings of the present invention, and applications compiled and interpreted using the hybrid compiler-interpreter 38 .
- the operating system 36 and t he applications 40 are intended to represent a broad categories of these software elements found in many computer systems. The constitutions and basic functions of these elements are also well known and will not be described further.
- the hybrid compiler-interpreter 38 will be described in further detail below with references to the remaining figures.
- FIGS. 4 and 5 two block diagrams illustrating the compiler of the hybrid compiler-interpreter of the present invention are shown.
- the compiler 42 comprising a lexical analyzer and parser 44 , an intermediate representation builder 46 , a semantic analyzer 48 , and a code generator 50 .
- These elements are sequentially coupled to each other. Together, they transform program source code 52 into tokenized statements 54 , intermediate representations 56 , annotated intermediate representations 58 , and ultimately intermediate form code 60 with data references made on a symbolic basis.
- the lexical analyzer and parser 44 , the intermediate representation builder 46 , and the semantic analyzer 48 are intended to represent a broad category of these elements found in most compilers. The constitutions and basic functions of these elements are well known and will not be otherwise described further here. Similarly, a variety of well known tokens, intermediate representations, annotations, and intermediate forms may also be used to practice the present invention.
- the code generator 50 comprises a main code generation routine 62 , a number of complimentary operator specific code generation routines for handling the various operators, such as the ADD and the IF code generation routines, 64 and 66 , and a data reference handling routine 68 .
- the main code generation routine 62 , the operator specific code generation routines, e.g. 64 and 66 , and the data reference handling routine 68 are intended to represent a broad category of these elements found in most compilers. The constitutions and basic functions of these elements are well known and will not be otherwise described further here.
- the interpreter 70 comprises a main interpretation routine 72 , a number of complimentary operator specific interpretations routines, such as the ADD and the IF interpretation routines, 74 and 76 , and two data reference interpretation routines, a static field reference routine (SFR) and a dynamic field reference routine (DFR), 78 and 80 .
- the main interpreter routine 72 receives the byte codes 82 of the intermediate form object code as inputs, and interprets them, invoking the operator specific interpretations routines, e.g.
- the main interpretation routine 72 the operator specific interpretation routines, e.g. 74 and 76 , and the static field reference routine 78 , are intended to represent a broad category of these elements found in most compilers and interpreters. The constitutions and basic functions of these elements are well known and will not be otherwise described further here.
- the main interpretation routine determines if the data reference is static, i.e. numeric, or dynamic, i.e. symbolic, block 88 . If the data reference is a symbolic reference, branch 88 b, the main interpretation routine invokes the dynamic field reference routine, block 90 . Upon invocation, the dynamic field reference routine resolves the symbolic reference, and rewrites the symbolic reference in the intermediate form object code as a numeric reference, block 92 . Upon rewriting the data reference in the object code, the dynamic field reference routine returns to the main interpretation routine, block 100 , without advancing the program counter. As a result, the instruction with the rewritten numeric data reference gets reexecuted again.
- the main interpretation routine invokes the static field reference routine, block 94 .
- the static field reference routine obtain the data reference by the numeric reference, block 96 .
- the static field reference routine advances the program counter, block 98 , and returns to the main interpretation routine, block 100 .
- FIG. 8 a block diagram illustrating the alteration and rewriting of data references under the present invention in further detail is shown.
- a data referencing instruction such as the LOAD instruction 14 ′′
- LOAD instruction 14 ′′ is initially generated with a symbolic reference, e.g. “y”.
- the data referencing instruction e.g. 14
- a numeric reference e.g. slot 2
- the extra level of interpretation to resolve the symbolic reference is no longer necessary.
- the “compiled” intermediate form object code of a program achieves execution performance substantially similar to that of the traditional compiled object code, and yet it has the flexibility of not having to be recompiled when the data objects it deals with are altered like that of the traditional translated code, since data reference resolution is performed at the first execution of a generated instruction comprising a symbolic reference.
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
A hybrid compiler-interpreter comprising a compiler for “compiling” source program code, and an interpreter for interpreting the “compiled” code, is provided to a computer system. The compiler comprises a code generator that generates code in intermediate form with data references made on a symbolic basis. The interpreter comprises a main interpretation routine, and two data reference handling routines, a dynamic field reference routine for handling symbolic references, and a static field reference routine for handling numeric references. The dynamic field reference routine, when invoked, resolves a symbolic reference and rewrites the symbolic reference into a numeric reference. After re-writing, the dynamic field reference routine returns to the main interpretation routine without advancing program execution to the next instruction, thereby allowing the rewritten instruction with numeric reference to be reexecuted. The static field reference routine, when invoked, obtain data for the program from a data object based on the numeric reference. After obtaining data, the static field reference routine advances program execution to the next instruction before returning to the interpretation routine. The main interpretation routine selectively invokes the two data reference handling routines depending on whether the data reference in an interaction in a symbolic or a numeric reference.
Description
This is a continuation of reissue application Ser. No. 08/755,764, filed Nov. 21, 1996, now U.S. Pat. Re. No. 36,204, which is incorporated herein by reference.
1. Field of the Invention
The present invention relates to the field of computer systems, in particular, programming language compilers and interpreters of these computer systems. More specifically, the present invention relates to resolving references in compiler generated object code.
2. Background
The implementation of modern programming languages, including object oriented programming languages, are generally grouped into two categories: compiled and interpreted.
In a compiled programming language, a computer program (called a compiler) compiles the source program and generates executable code for a specific computer architecture. References to data in the generated code are resolved prior to execution based on the layout of the data objects that the program deals with, thereby, allowing the executable code to reference data by their locations. For example, consider a program that deals with a point data object containing two variables x and y, representing the x and y coordinates of a point, and further assume that the variables x and y are assigned slots 1 and 2 respectively, in each instance of the point data object. Thus, an instruction that accesses or fetches y, such as the Load instruction 14 illustrated in FIG. 1, is resolved to reference the variable y by the assigned slot 2 before the instruction sequence is executed. Particular examples of programming language compilers that generate code and resolve data references in the manner described above include C and C++ compilers.
This “compiled” approach presents problems when a program is constructed in pieces, which happens frequently under object oriented programming. For example, a program may be constructed from a library and a main program. If a change is made to the library, such that the layout of one of the data objects it implements is changed, then clients of that library, like the main program, need to be recompiled. Continuing the preceding example, if the point data object had a new field added at the beginning called name, which contains the name of the point, then the variables x and y could be reassigned to slots 2 and 3. Existing programs compiled assuming that the variables x and y and are in slots 1 and 2 will have to be recompiled for them to execute correctly.
In an interpreted language, a computer program (called a translator) translates the source statements of a program into some intermediate form, typically independent of any computer instruction set. References to data in the intermediate form are not fully resolved before execution based on the layout of the data objects that the program deals with. Instead, references to data are made on a symbolic basis. Thus, an instruction that accesses or fetches y, such as the Load instruction 14′ illustrated in FIG. 1, references the variable y by the symbolic name “y”. The program in intermediate form is executed by another program (called an interpreter) which scans through the code in intermediate form, and performs the indicated actions. Each of the symbolic references is resolved during execution each time the instruction comprising the symbolic reference is interpreted. A particular example of a programming language interpreter that translates source code into intermediate form code and references data in the manner described above is the BASIC interpreter.
The “interpreted” approach avoids the problems encountered with the “compiled” approach, when a program is constructed in pieces. However, because of the extra level of interpretation at execution time, each time an instruction comprising a symbolic reference is interpreted, execution is slowed significantly.
Thus, it is desirable if programming languages can be implemented in a manner that provides the execution performance of the “compiled” approach, and at the same time, the flexibility of the “interpreted” approach for altering data objects, without requiring the compiled programs to be recompiled. As will be disclosed, the present invention provides a method and apparatus for resolving data references in compiler generated object code that achieves the desired results.
A method and apparatus for generating executable code and resolving data references in the generated code is disclosed. The method and apparatus provides execution performance substantially similar to the traditional compiled approach, as well as the flexibility of altering data objects like the traditional interpreted approach. The method and apparatus has particular application to implementing object oriented programming languages in computer systems.
Under the present invention, a hybrid compiler-interpreter comprising a compiler for “compiling” source program code, and an interpreter for interpreting the “compiled” code, is provided to a computer system. The compiler comprises a code generator that generates code in intermediate form with data references made on a symbolic basis. The interpreter comprises a main interpretation routine, and two data reference handling routines, a static field reference routine for handling numeric references and a dynamic field reference routine for handling symbolic references. The dynamic field reference routine, when invoked, resolves a symbolic reference and rewrites the symbolic reference into a numeric reference. After rewriting, the dynamic field reference routine returns to the interpreter without advancing program execution to the next instruction, thereby allowing the rewritten instruction with numeric reference to be reexecuted. The static field reference routine, when invoked, obtain data for the program from a data object based on the numeric reference. After obtaining data, the static field reference routine advances program execution to the next instruction before returning to the interpreter. The main interpretation routine selectively invokes the two data reference handling routines depending on whether the data reference in an instruction is a symbolic or a numeric reference.
As a result, the “compiled” intermediate form object code of a program achieves execution performance substantially similar to that of the traditional compiled object code, and yet it has the flexibility of not having to be recompiled when the data objects it deals with are altered like that of the traditional translated code, since data reference resolution is performed at the first execution of a generated instruction comprising a data reference.
The objects, features, and advantages of the present invention will be apparent from the following detailed description of the presently preferred and alternate embodiments of the invention with references to the drawings in which:
FIG. 1 shows the prior art compiled approach and the prior art interpreted approach to resolving data reference.
FIG. 2 illustrates an exemplary computer system incorporated with the teachings of the present invention.
FIG. 3 illustrates the software elements of the exemplary computer system of FIG. 2.
FIG. 4 illustrates one embodiment of the compiler of the hybrid compiler-interpreter of the present invention.
FIG. 5 illustrates one embodiment of the code generator of the compiler of FIG. 4.
FIG. 6 illustrates one embodiment of the interpreter and operator implementations of the hybrid compiler-interpreter of the present invention.
FIG. 7 illustrates the cooperative operation flows of the main interpretation routine, the static field reference routine and the dynamic field reference routine of the present invention.
FIG. 8 illustrates an exemplary resolution and rewriting of a data reference under the present invention.
A method and apparatus for generating executable code and resolving data references in the generated code is disclosed. The method and apparatus provides execution performance substantially similar to the traditional compiled approach, as well as the flexibility of altering data objects like the traditional interpreted approach. The method and apparatus has particular application to implementing object oriented programming languages. In the following description for purposes of explanation, specific numbers, materials and configurations are set forth in order to provide a thorough understanding of the present invention. However, it will be apparent to one skilled in the art that the present invention may be practiced without the specific details. In other instances, well known systems are shown in diagrammatical or block diagram form in order not to obscure the present invention unnecessarily.
Referring now to FIGS. 2 and 3, two block diagrams illustrating an exemplary computer system incorporated with the teachings of the present invention are shown. As shown in FIG. 2, the exemplary computer system 20 comprises a central processing unit (CPU) 22, a memory 24, and an I/O module 26. Additionally, the exemplary computer system 20 also comprises a number of input/output devices 30 and a number of storage devices 28. The CPU 22 is coupled to the memory 24 and the I/O module 26. The input/output devices 30, and the storage devices 28 are also coupled to the I/O module 26. The I/O module 26 in turn is coupled to a network 32.
Except for the manner they are used to practice the present invention, the CPU 22, the memory 24, the I/O module 26, the input/output devices 30, and the storage devices 28, are intended to represent a broad category of these hardware elements found in most computer systems. The constitutions and basic functions of these elements are well known and will not be further described here.
As shown in FIG. 3, the software elements of the exemplary computer system of FIG. 2 comprises an operating system 36, a hybrid compiler-interpreter 38 incorporated with the teachings of the present invention, and applications compiled and interpreted using the hybrid compiler-interpreter 38. The operating system 36 and t he applications 40 are intended to represent a broad categories of these software elements found in many computer systems. The constitutions and basic functions of these elements are also well known and will not be described further. The hybrid compiler-interpreter 38 will be described in further detail below with references to the remaining figures.
Referring now to FIGS. 4 and 5, two block diagrams illustrating the compiler of the hybrid compiler-interpreter of the present invention are shown. Shown in FIG. 4 is one embodiment of the compiler 42 comprising a lexical analyzer and parser 44, an intermediate representation builder 46, a semantic analyzer 48, and a code generator 50. These elements are sequentially coupled to each other. Together, they transform program source code 52 into tokenized statements 54, intermediate representations 56, annotated intermediate representations 58, and ultimately intermediate form code 60 with data references made on a symbolic basis. The lexical analyzer and parser 44, the intermediate representation builder 46, and the semantic analyzer 48, are intended to represent a broad category of these elements found in most compilers. The constitutions and basic functions of these elements are well known and will not be otherwise described further here. Similarly, a variety of well known tokens, intermediate representations, annotations, and intermediate forms may also be used to practice the present invention.
As shown in FIG. 5, the code generator 50 comprises a main code generation routine 62, a number of complimentary operator specific code generation routines for handling the various operators, such as the ADD and the IF code generation routines, 64 and 66, and a data reference handling routine 68. Except for the fact that generated coded 60 are in intermediate form and the data references in the generated code are made on a symbolic basis, the main code generation routine 62, the operator specific code generation routines, e.g. 64 and 66, and the data reference handling routine 68, are intended to represent a broad category of these elements found in most compilers. The constitutions and basic functions of these elements are well known and will not be otherwise described further here.
For further descriptions on various parsers, intermediate representation builders, semantic analyzers, and code generators, see A. V. Aho, R. Sethi, and J. D. Ullman, Compilers Principles, Techniques and Tools. Addision-Wesley, 1986, pp. 25-388, and 463-512.
Referring now to FIGS. 6 and 7, two block diagrams illustrating one embodiment of the interpreter of the hybrid compiler-interpreter of the present invention and its operation flow for handling data references is shown. As shown in FIG. 6, the interpreter 70 comprises a main interpretation routine 72, a number of complimentary operator specific interpretations routines, such as the ADD and the IF interpretation routines, 74 and 76, and two data reference interpretation routines, a static field reference routine (SFR) and a dynamic field reference routine (DFR), 78 and 80. The main interpreter routine 72 receives the byte codes 82 of the intermediate form object code as inputs, and interprets them, invoking the operator specific interpretations routines, e.g. 74 and 76, and the data reference routines, 78 and 80, as necessary. Except for the dynamic field reference routine 80, and the manner in which the main interpretation routine 72 and the state field reference routine 78 cooperates with the dynamic field reference routine 80 to handle data references, the main interpretation routine 72, the operator specific interpretation routines, e.g. 74 and 76, and the static field reference routine 78, are intended to represent a broad category of these elements found in most compilers and interpreters. The constitutions and basic functions of these elements are well known and will not be otherwise described further here.
As shown in FIG. 7, upon receiving a data reference byte code, block 86, the main interpretation routine determines if the data reference is static, i.e. numeric, or dynamic, i.e. symbolic, block 88. If the data reference is a symbolic reference, branch 88b, the main interpretation routine invokes the dynamic field reference routine, block 90. Upon invocation, the dynamic field reference routine resolves the symbolic reference, and rewrites the symbolic reference in the intermediate form object code as a numeric reference, block 92. Upon rewriting the data reference in the object code, the dynamic field reference routine returns to the main interpretation routine, block 100, without advancing the program counter. As a result, the instruction with the rewritten numeric data reference gets reexecuted again.
On the other hand, if the data reference is determined to be a numeric reference, branch 88a, the main interpretation routine invokes the static field reference routine, block 94. Upon invocation, the static field reference routine obtain the data reference by the numeric reference, block 96. Upon obtaining the data, the static field reference routine advances the program counter, block 98, and returns to the main interpretation routine, block 100.
Referring now to FIG. 8, a block diagram illustrating the alteration and rewriting of data references under the present invention in further detail is shown. As illustrated, a data referencing instruction, such as the LOAD instruction 14″, is initially generated with a symbolic reference, e.g. “y”. Upon its first interpretation in execution, the data referencing instruction, e.g. 14, is dynamically resolved and rewritten with a numeric reference, e.g. slot 2. Thus, except for the first execution, the extra level of interpretation to resolve the symbolic reference is no longer necessary. Therefore, under the present invention, the “compiled” intermediate form object code of a program achieves execution performance substantially similar to that of the traditional compiled object code, and yet it has the flexibility of not having to be recompiled when the data objects it deals with are altered like that of the traditional translated code, since data reference resolution is performed at the first execution of a generated instruction comprising a symbolic reference.
While the present invention has been described in terms of presently preferred and alternate embodiments, those skilled in the art will recognize that the invention is not limited to the embodiments described. The method and apparatus of the present invention can be practiced with modification and alteration within the spirit and scope of the appended claims. The description is thus to be regarded as illustrative instead of limiting on the present invention.
Claims (41)
1. In a computer system comprising a program in source code form, a method for generating executable code for said program and resolving data references in said generated code, said method comprising the steps of:
a) generating executable code in intermediate form for said program in source code form with data references being made in said generated code on a symbolic basis, said generated code comprising a plurality of instructions of said computer system;
b) interpreting said instructions, one at a time, in accordance to a program execution control;
c) resolving said symbolic references to corresponding numeric references, replacing said symbolic references with their corresponding numeric references, and continuing interpretation without advancing program execution, as said symbolic references are encountered while said instructions are being interpreted; and
d) obtaining data in accordance to said numeric references, and continuing interpretation after advancing program execution, as said numeric references are encountered while said instruction are being interpreted;
said steps b) through d) being performed iteratively and interleaving.
2. The method as set forth in claim 1 , wherein, said program in source code form is implemented in source code form of an object oriented programming language.
3. The method as set forth in claim 2 , wherein said programming language is C.
4. The method as set forth in claim 2 , wherein, said programming language is C++.
5. The method as set forth in claim 1 , wherein, said program execution control is a program counter said continuing interpretation in step c) is achieved by performing said step b) after said c) without incrementing said program counter; and
said continuing interpretation in said step d) is achieved by performing said step b) after said d) after incrementing said program counter.
6. In a computer system comprising a program in source code form, an apparatus for generating executable code for said program and resolving data references in said generated code, said apparatus comprising:
a) compilation means for receiving said program in source code form and generating executable code in intermediate form for said program in source code form with data references being made in said generated code on a symbolic basis, said generated code comprising a plurality of instructions of said computer system;
b) interpretation means for receiving said generated code and interpreting said instructions, one at a time;
c) dynamic reference handling means coupled to said interpretation means for resolving said symbolic references to corresponding numeric references, replacing said symbolic references with their corresponding numeric references, and continuing interpretation by said interpretation means without advancing program execution, as said symbolic references are encountered while said instructions are being interpreted by said interpretation means; and
d) static reference handling means coupled to said interpretation means for obtaining data in accordance to said numeric references, and continuing interpretation by said interpretation means after advancing program execution, as said numeric references are encountered while said instruction are being interpreted by said interpretation means;
said interpretation means, said dynamic reference handling means, and said static reference handling means performing their corresponding functions iteratively and interleavingly.
7. The apparatus as set forth in claim 6 , wherein, said program in source code form is implemented in source code form of an object oriented programming language.
8. The apparatus as set forth in claim 7 , wherein, said programming language is C.
9. The apparatus as set forth in claim 7 , wherein, said programming language is C++.
10. The apparatus as set forth in claim 6 , wherein, and program execution control is a program counter.
11. An apparatus comprising:
a memory containing intermediate form object code constituted by a set of instructions, certain of said instructions containing one or more symbolic references; and
a processor configured to execute said instructions containing one or more symbolic references by determining a numerical reference corresponding to said symbolic reference, storing said numerical references, and obtaining data in accordance to said numerical references.
12. A computer-readable medium containing instructions for controlling a data processing system to perform a method for interpreting intermediate form object code comprised of instructions, certain of said instructions containing one or more symbolic references, said method comprising the steps of:
interpreting said instructions in accordance with a program execution control; and
resolving a symbolic reference in an instruction being interpreted, said step of resolving said symbolic reference including the substeps of:
determining a numerical reference corresponding to said symbolic reference, and
storing said numerical reference in a memory.
13. A computer-implemented method for executing instructions, certain of said instructions containing one or more symbolic references, said method comprising the steps of:
resolving a symbolic reference in an instruction, said step of resolving said symbolic reference including the substeps of:
determining a numerical reference corresponding to said symbolic reference, and
storing said numerical reference in a memory.
14. The method of claim 3 , wherein said substep of storing said numerical reference comprises the substep of replacing said symbolic reference with said numerical reference.
15. The method of claim 3 , wherein said step of resolving said symbolic reference further comprises the substep of executing said instruction containing said symbolic reference using the stored numerical reference.
16. The method of claim 3 , wherein said step of resolving said symbolic reference further comprises the substep of advancing program execution control after said substep of executing said instruction containing said symbolic reference.
17. In a computer system comprising a program, a method for executing said program comprising the steps of:
receiving intermediate form object code for said program with symbolic data references in certain instructions of said intermediate form object code; and
converting the instructions of the intermediate form object code having symbolic data references, said converting step comprising the substeps of:
resolving said symbolic references to corresponding numerical references,
storing said numerical references, and
obtaining data in accordance to said numerical references.
18. A computer-implemented method for executing program operations, each operation being comprised of a set of instructions, certain of said instructions containing one or more symbolic references, said method comprising the steps of:
receiving a set of instructions reflecting an operation; and
performing the operation corresponding to the received set of instructions, wherein at least one of said symbolic references is resolved by determining a numerical reference corresponding to said symbolic reference, storing said numerical reference, and obtaining data in accordance to said stored numerical reference.
19. A memory for use in executing a program by a processor, the memory comprising:
intermediate form code containing symbolic field references associated with an intermediate representation of source code for the program,
the intermediate representation having been generated by lexically analyzing the source code and parsing output of said lexical analysis, and
wherein the symbolic field references are resolved by determining a numerical reference corresponding to said symbolic reference, and storing said numerical reference in a memory.
20. A computer-implemented method comprising:
receiving a program that comprises a set instructions written in an intermediate form code;
replacing each instruction in the program with a symbolic data reference with a new instruction containing a numeric reference resulting from invocation of a dynamic field reference routine to resolve the symbolic data reference; and
executing the program by performing an operation in accordance with each instruction or new instruction, depending upon whether an instruction has been replaced with a new instruction in accordance with the replacing step.
21. A data processing system, comprising:
a processor; and
a memory comprising a control program for causing the processor to (i) receive a program that comprises a set instructions written in an intermediate form code, (ii) replace each instruction in the program with a symbolic data reference with a new instruction containing a numeric reference resulting from invocation of a dynamic field reference routine to resolve the symbolic data reference, and (iii) execute the program by performing an operation in accordance with each instruction or new instruction, depending upon whether an instruction has been replaced with a new instruction in accordance with the replacing step.
22. An apparatus comprising:
a memory containing a compiled program in intermediate form object code constituted by a set of instructions, at least one of the instructions containing a symbolic reference; and
a processor configured to execute the instruction by determining a numerical reference corresponding to the symbolic reference, and performing an operation in accordance with the instruction and data obtained in accordance with the numerical reference without recompiling the program or any portion thereof.
23. A computer-implemented method, comprising:
receiving a program with a set instructions written in an intermediate form code;
analyzing each instruction of the program to determine whether the instruction contains a symbolic reference to a data object; and
executing the program, wherein when it was determined that an instruction contains a symbolic reference, data from a storage location identified by a numeric reference correspoding to the symbolic reference is used thereafter to perform an operation corresponding to that instruction.
24. A computer-implemented method for executing a program comprised of bytecodes, the method comprising:
determining immediately prior to execution whether a bytecode of the program contains a symbolic data reference;
when it is determined that the bytecode of the program contains a symbolic data reference, invoking a dynamic field reference routine to resolve the symbolic data reference; and
executing thereafter the bytecode using stored data located using a numeric reference resulting from the resolution of the symbolic reference.
25. A data processing system, comprising:
a processor; and
a memory comprising a program comprised of bytecodes and instructions for causing the processor to (i) determine immediately prior to execution of the program whether a bytecode of the program contains a symbolic data reference, (ii) when it is determined that the bytecode of the program contains a symbolic data reference, invoke a dynamic field reference routine to resolve the symbolic data reference, and (iii) execute thereafter the bytecode using stored data located using a numeric reference resulting from the resolution of the symbolic reference.
26. A computer program product containing instructions for causing a computer to perform a method for executing a program comprised of bytecodes, the method comprising:
determining immediately prior to execution whether a bytecode of the program contains a symbolic data reference;
when it is determined that the bytecode of the program contains a symbolic data reference, invoking a dynamic field reference routine to resolve the symbolic data reference; and
executing thereafter the bytecode using stored data located using a numeric reference resulting from the resolution of the symbolic reference.
27. A computer-implemented method comprising:
receiving a program with a set of original instructions written in an intermediate form code;
generating a set of new instructions for the program that contain numeric references resulting from invocation of a routine to resolve any symbolic data references in the set of original instructions; and
executing the program using the set of new instructions.
28. A data processing system, comprising:
a processor; and
a memory comprising a control program for causing the processor to (i) receive a program with a set of original instructions written in an intermediate form code, (ii) generate a set of new instructions for the program that contain numeric references resulting from invocation of a routine to resolve any symbolic data references in the set of original instructions, and (iii) executing the program using the set of new instructions.
29. A computer program product containing instructions for causing a computer to perform a method, the method comprising:
receiving a program with a set of original instructions written in an intermediate form code;
generating a set of new instructions for the program that contain numeric references resulting from invocation of a routine to resolve any symbolic data references in the set of original instructions; and
executing the program using the set of new instructions.
30. A computer-implemented method comprising:
receiving a program that comprises a set instructions written in an intermediate form code;
replacing each instruction in the program with a symbolic data reference with a new instruction containing a numeric reference resulting from invocation of a dynamic field reference routine to resolve the symbolic data reference; and
executing the program by performing an operation in accordance with each instruction or new instruction, depending upon whether an instruction has been replaced with a new instruction in accordance with the replacing step.
31. A data processing system, comprising:
a processor; and
a memory comprising a control program for causing the processor to (i) receive a program that comprises a set instructions written in an intermediate form code, (ii) replace each instruction in the program with a symbolic data reference with a new instruction containing a numeric reference resulting from invocation of a dynamic field reference routing to resolve the symbolic data reference, and (iii) execute the program by performing an operation in accordance with each instruction or new instruction, depending upon whether an instruction has been replaced with a new instruction in accordance with the replacing step.
32. A computer program product containing control instructions for causing a computer to perform a method, the method comprising:
receiving a program that comprises a set instructions written in an intermediate form code;
replacing each instruction in the program with a symbolic data reference with a new instruction containing a numeric reference resulting from invocation of a dynamic field reference routine to resolve the symbolic data reference; and
executing the program by performing an operation in accordance with each instruction or new instruction, depending upon whether an instruction has been replaced with a new instruction in accordance with the replacing step.
33. A computer-implemented method, comprising:
receiving a program with a set instructions written in an intermediate form code;
analyzing each instruction of the program to determine whether the instruction contains a symbolic reference to a data object; and
executing the program, wherein when it was determined that an instruction contains a symbolic reference, data from a storage location identified by a numeric reference corresponding to the symbolic reference is used thereafter to perform an operation corresponding to that instruction.
34. A data processing system, comprising:
a processor; and
a memory comprising a control program for causing the processor to (i) receive a program with a set instructions written in an intermediate form code, (ii) analyze each instruction of the program to determine whether the instruction contains a symbolic reference to a data object, and (iii) execute the program, wherein when it was determined that an instruction contains a symbolic reference, data from a storage location identified by a numeric reference corresponding to the symbolic reference is used thereafter to perform an operation corresponding to that instruction.
35. A computer program product containing control instructions for causing a computer to perform a method, the method comprising:
receiving a program with a set instructions written in an intermediate form code;
analyzing each instruction of the program to determine whether the instruction contains a symbolic reference to a data object; and
executing the program, wherein when it was determined that an instruction contains a symbolic reference, data from a storage location identified by a numeric reference corresponding to the symbolic reference is used thereafter to perform an operation corresponding to that instruction.
36. A computer-implemented method for executing a program comprised of bytecodes, the method comprising:
determining whether a bytecode of the program contains a symbolic reference;
when it is determined that the bytecode contains a symbolic reference, invoking a dynamic field reference routine to resolve the symbolic reference; and
performing an operation identified by the bytecode thereafter using data from a storage location identified by a numeric reference resulting from the invocation of the dynamic field reference routine.
37. A data processing system, comprising:
a processor; and
a memory comprising a program comprised of bytecodes and instructions for causing the processor to (i) determine whether a bytecode of the program contains a symbolic reference, (ii) when it is determined that the bytecode contains a symbolic reference, invoke a dynamic field reference routine to resolve the symbolic reference, and (iii) perform an operation identified by the bytecode thereafter using data from a storage location identified by a numeric reference resulting from the invocation of the dynamic field reference routine.
38. A computer program product containing instructions for causing a computer to perform a method for executing a program comprised of bytecodes, the method comprising:
determining whether a bytecode of the program contains a symbolic reference;
when it is determined that the bytecode contains a symbolic reference, invoking a dynamic field reference routine to resolve the symbolic reference; and
performing an operation identified by the bytecode therafter using data from a storage location identified by a numeric reference resulting from the invocation of the dynamic field reference routine.
39. A computer-implemented method comprising:
receiving a program formed of instructions written in an intermediate form code compiled from source code;
analyzing each instruction to determine whether it contains a symbolic field reference; and
executing the program by performing an operation identified by each instruction, wherein data from a storage location identified by a numeric reference is thereafter used for the operation when the instruction contains a symbolic field reference, the numeric reference having been resolved from the symbolic field reference.
40. A data processing system, comprising:
a processor; and
a memory comprising a control program for causing the processor to (i) receive a program formed of instructions written in an intermediate form code compiled from source code, (ii) analyze each instruction to determine whether it contains a symbolic field reference, and (iii) execute the program by performing an operation identified by each instruction, wherein data from a storage location identified by a numeric reference is thereafter used for the operation when the instruction contains a symbolic field reference, the numeric reference having been resolved from the symbolic field reference.
41. A computer program product containing control instructions for causing a computer to perform a method, the method comprising:
receiving a program formed of instructions written in an intermediate form code compiled from source code;
analyzing each instruction to determine whether it contains a symbolic field reference; and
executing the program by performing an operation identified by each instruction, wherein data from a storage location identified by a numeric reference is used thereafter for the operation when the instruction contains a symbolic field reference, the numeric reference having been resolved from the symbolic field reference.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/261,970 USRE38104E1 (en) | 1992-12-22 | 1999-03-03 | Method and apparatus for resolving data references in generated code |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US07/994,655 US5367685A (en) | 1992-12-22 | 1992-12-22 | Method and apparatus for resolving data references in generated code |
US09/261,970 USRE38104E1 (en) | 1992-12-22 | 1999-03-03 | Method and apparatus for resolving data references in generated code |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US07/994,655 Reissue US5367685A (en) | 1992-12-22 | 1992-12-22 | Method and apparatus for resolving data references in generated code |
Publications (1)
Publication Number | Publication Date |
---|---|
USRE38104E1 true USRE38104E1 (en) | 2003-04-29 |
Family
ID=25540895
Family Applications (3)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US07/994,655 Expired - Lifetime US5367685A (en) | 1992-12-22 | 1992-12-22 | Method and apparatus for resolving data references in generated code |
US08/755,764 Expired - Lifetime USRE36204E (en) | 1992-12-22 | 1996-11-21 | Method and apparatus for resolving data references in generated code |
US09/261,970 Expired - Lifetime USRE38104E1 (en) | 1992-12-22 | 1999-03-03 | Method and apparatus for resolving data references in generated code |
Family Applications Before (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US07/994,655 Expired - Lifetime US5367685A (en) | 1992-12-22 | 1992-12-22 | Method and apparatus for resolving data references in generated code |
US08/755,764 Expired - Lifetime USRE36204E (en) | 1992-12-22 | 1996-11-21 | Method and apparatus for resolving data references in generated code |
Country Status (4)
Country | Link |
---|---|
US (3) | US5367685A (en) |
EP (3) | EP1164478A3 (en) |
JP (1) | JPH06230976A (en) |
DE (1) | DE69328665T2 (en) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6785683B1 (en) * | 2000-07-06 | 2004-08-31 | International Business Machines Corporation | Categorization and presentation tool for code resources |
US20060130023A1 (en) * | 2002-07-10 | 2006-06-15 | Klein Dean A | Method and system for generating object code to facilitate predictive memory retrieval |
US20070021852A1 (en) * | 2005-07-22 | 2007-01-25 | Honeywell International Inc. | Control system migration |
US20100115221A1 (en) * | 2002-07-11 | 2010-05-06 | Klein Dean A | System and method for processor with predictive memory retrieval assist |
US10503525B2 (en) | 2017-08-22 | 2019-12-10 | Refinitiv Us Organization Llc | Apparatuses, methods and systems for persisting values in a computing environment |
US11809839B2 (en) | 2022-01-18 | 2023-11-07 | Robert Lyden | Computer language and code for application development and electronic and optical communication |
Families Citing this family (139)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5748963A (en) * | 1995-05-12 | 1998-05-05 | Design Intelligence, Inc. | Adaptive binding |
US5896535A (en) * | 1996-08-20 | 1999-04-20 | Telefonaktiebolaget L M Ericsson (Publ) | Method and system for testing computer system software |
US6186677B1 (en) * | 1996-08-27 | 2001-02-13 | Compuware Corporation | Byte code instrumentation |
US5875335A (en) * | 1996-09-30 | 1999-02-23 | Apple Computer, Inc. | Parameter marshaling techniques for dynamic object-oriented programming languages |
US5911069A (en) * | 1996-09-30 | 1999-06-08 | Apple Computer, Inc. | Exception handling techniques for native methods bound to SOM classes |
US5930480A (en) * | 1996-10-10 | 1999-07-27 | Apple Computer, Inc. | Software architecture for controlling data streams based on linked command blocks |
ES2184066T3 (en) | 1996-10-25 | 2003-04-01 | Schlumberger Systems & Service | USE OF A HIGH-LEVEL PROGRAMMING LANGUAGE WITH MICROCONTROLLER. |
US5923878A (en) * | 1996-11-13 | 1999-07-13 | Sun Microsystems, Inc. | System, method and apparatus of directly executing an architecture-independent binary program |
CA2194848C (en) * | 1997-01-10 | 2003-12-23 | Jonathan Layes | Condition handling using script interpreters |
US5907707A (en) * | 1997-01-14 | 1999-05-25 | International Business Machines Corporation | Object model for Java |
US5953736A (en) | 1997-04-23 | 1999-09-14 | Sun Microsystems, Inc. | Write barrier system and method including pointer-specific instruction variant replacement mechanism |
US6038572A (en) * | 1997-04-23 | 2000-03-14 | Sun Microsystems, Inc. | Method and apparatus for localizing nodes in a garbage collected carded heap |
US5845298A (en) * | 1997-04-23 | 1998-12-01 | Sun Microsystems, Inc. | Write barrier system and method for trapping garbage collection page boundary crossing pointer stores |
US5903900A (en) * | 1997-04-23 | 1999-05-11 | Sun Microsystems, Inc. | Method and apparatus for optimizing exact garbage collection of array nodes in a carded heap |
US6098089A (en) * | 1997-04-23 | 2000-08-01 | Sun Microsystems, Inc. | Generation isolation system and method for garbage collection |
US6115782A (en) * | 1997-04-23 | 2000-09-05 | Sun Micosystems, Inc. | Method and apparatus for locating nodes in a carded heap using a card marking structure and a node advance value |
US5911144A (en) * | 1997-04-23 | 1999-06-08 | Sun Microsystems, Inc. | Method and apparatus for optimizing the assignment of hash values to nodes residing in a garbage collected heap |
US5915255A (en) * | 1997-04-23 | 1999-06-22 | Sun Microsystems, Inc. | Method and apparatus for referencing nodes using links |
US5903899A (en) * | 1997-04-23 | 1999-05-11 | Sun Microsystems, Inc. | System and method for assisting exact Garbage collection by segregating the contents of a stack into sub stacks |
US5920876A (en) * | 1997-04-23 | 1999-07-06 | Sun Microsystems, Inc. | Performing exact garbage collection using bitmaps that identify pointer values within objects |
US5900001A (en) * | 1997-04-23 | 1999-05-04 | Sun Microsystems, Inc. | Method and apparatus for optimizing exact garbage collection using a bifurcated data structure |
WO1999001815A1 (en) | 1997-06-09 | 1999-01-14 | Intertrust, Incorporated | Obfuscation techniques for enhancing software security |
US6513156B2 (en) * | 1997-06-30 | 2003-01-28 | Sun Microsystems, Inc. | Interpreting functions utilizing a hybrid of virtual and native machine instructions |
US6317872B1 (en) * | 1997-07-11 | 2001-11-13 | Rockwell Collins, Inc. | Real time processor optimized for executing JAVA programs |
US6317796B1 (en) * | 1997-10-06 | 2001-11-13 | Sun Microsystems, Inc. | Inline database for receiver types in object-oriented systems |
US6075935A (en) * | 1997-12-01 | 2000-06-13 | Improv Systems, Inc. | Method of generating application specific integrated circuits using a programmable hardware architecture |
US6081665A (en) * | 1997-12-19 | 2000-06-27 | Newmonics Inc. | Method for efficient soft real-time execution of portable byte code computer programs |
US5911073A (en) * | 1997-12-23 | 1999-06-08 | Hewlett-Packard Company | Method and apparatus for dynamic process monitoring through an ancillary control code system |
US6121924A (en) * | 1997-12-30 | 2000-09-19 | Navigation Technologies Corporation | Method and system for providing navigation systems with updated geographic data |
US6382846B1 (en) | 1998-01-09 | 2002-05-07 | Industial Technology Research Institute | Intermediate instruction execution processor which resolves symbolic references without modifying intermediate instruction code |
US6102966A (en) * | 1998-03-20 | 2000-08-15 | Preemptive Solutions, Inc. | Method for renaming identifiers of a computer program |
US6061520A (en) * | 1998-04-07 | 2000-05-09 | Sun Microsystems, Inc. | Method and system for performing static initialization |
US6148437A (en) * | 1998-05-04 | 2000-11-14 | Hewlett-Packard Company | System and method for jump-evaluated trace designation |
US6189141B1 (en) | 1998-05-04 | 2001-02-13 | Hewlett-Packard Company | Control path evaluating trace designator with dynamically adjustable thresholds for activation of tracing for high (hot) activity and low (cold) activity of flow control |
US6164841A (en) * | 1998-05-04 | 2000-12-26 | Hewlett-Packard Company | Method, apparatus, and product for dynamic software code translation system |
US6158048A (en) * | 1998-05-29 | 2000-12-05 | Intel Corporation | Method for eliminating common subexpressions from java byte codes |
US6289506B1 (en) | 1998-06-30 | 2001-09-11 | Intel Corporation | Method for optimizing Java performance using precompiled code |
JP2000020319A (en) * | 1998-06-30 | 2000-01-21 | Canon Inc | Program executing device, control method thereof and storage medium |
US6223339B1 (en) | 1998-09-08 | 2001-04-24 | Hewlett-Packard Company | System, method, and product for memory management in a dynamic translator |
GB9825102D0 (en) * | 1998-11-16 | 1999-01-13 | Insignia Solutions Plc | Computer system |
US6338160B1 (en) * | 1998-12-08 | 2002-01-08 | Nazomi Communications, Inc. | Constant pool reference resolution method |
US6880155B2 (en) | 1999-02-02 | 2005-04-12 | Sun Microsystems, Inc. | Token-based linking |
US6848111B1 (en) | 1999-02-02 | 2005-01-25 | Sun Microsystems, Inc. | Zero overhead exception handling |
US6332216B1 (en) * | 1999-03-09 | 2001-12-18 | Hewlett-Packard Company | Hybrid just-in-time compiler that consumes minimal resource |
JP3424596B2 (en) * | 1999-04-28 | 2003-07-07 | 日本電気株式会社 | Method and apparatus for caching symbol reference information |
GB9921720D0 (en) * | 1999-09-14 | 1999-11-17 | Tao Group Ltd | Loading object-oriented computer programs |
US6671707B1 (en) | 1999-10-19 | 2003-12-30 | Intel Corporation | Method for practical concurrent copying garbage collection offering minimal thread block times |
DE60142136D1 (en) * | 2000-02-21 | 2010-07-01 | Panasonic Corp | Linking Java class files for embedded devices |
JP2001256058A (en) * | 2000-03-13 | 2001-09-21 | Omron Corp | Executing method of program by interpreter language and information processor using the same method |
JP2003528390A (en) | 2000-03-20 | 2003-09-24 | コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ | Method of executing a computer program by an interpreter, computer system and computer program product |
JP2001337823A (en) * | 2000-05-25 | 2001-12-07 | Sony Corp | Componentware making method and storage medium |
US6832369B1 (en) * | 2000-08-01 | 2004-12-14 | International Business Machines Corporation | Object oriented method and apparatus for class variable initialization |
US6675338B1 (en) | 2000-08-09 | 2004-01-06 | Sun Microsystems, Inc. | Internally generated vectors for burnin system |
US6651248B1 (en) * | 2000-09-01 | 2003-11-18 | International Business Machines Corporation | Method and apparatus for efficient interface method dispatch |
GB2367651B (en) * | 2000-10-05 | 2004-12-29 | Advanced Risc Mach Ltd | Hardware instruction translation within a processor pipeline |
GB2367653B (en) * | 2000-10-05 | 2004-10-20 | Advanced Risc Mach Ltd | Restarting translated instructions |
US6675372B1 (en) | 2000-10-31 | 2004-01-06 | Sun Microsystems, Inc. | Counting speculative and non-speculative events |
CA2346762A1 (en) | 2001-05-07 | 2002-11-07 | Ibm Canada Limited-Ibm Canada Limitee | Compiler generation of instruction sequences for unresolved storage devices |
US6993751B2 (en) * | 2001-05-14 | 2006-01-31 | Microsoft Corporation | Placing exception throwing instructions in compiled code |
US7181724B2 (en) * | 2001-06-20 | 2007-02-20 | Sun Microsystems, Inc. | Representation of Java® data types in virtual machines |
US6934944B2 (en) * | 2001-08-13 | 2005-08-23 | International Business Machines Corporation | Computer system and method for constant pool operations |
US6948156B2 (en) * | 2001-10-24 | 2005-09-20 | Sun Microsystems, Inc. | Type checking in java computing environments |
US6976254B2 (en) | 2001-11-28 | 2005-12-13 | Esmertec Ag | Inter-method control transfer for execution engines with memory constraints |
US20030191733A1 (en) * | 2002-04-03 | 2003-10-09 | Kiick Christopher J. | System and method for data-mining a source code base to obtain module interface information |
US7328432B2 (en) * | 2003-06-02 | 2008-02-05 | Sun Microsystems, Inc. | Proximity-based addressing for supporting in-place execution in virtual machines |
EP1489492A1 (en) * | 2003-06-19 | 2004-12-22 | Texas Instruments Incorporated | Two-step instruction resolution |
US20050137874A1 (en) * | 2003-12-22 | 2005-06-23 | International Business Machines Corporation | Integrating object code in voice markup |
US7574705B2 (en) | 2004-06-29 | 2009-08-11 | Sun Microsystems, Inc. | Method and apparatus for efficiently resolving symbolic references in a virtual machine |
US20060101374A1 (en) * | 2004-10-14 | 2006-05-11 | Beng Giap Lim | Enterprise management system installer |
DE502007002478D1 (en) * | 2007-01-22 | 2010-02-11 | Siemens Ag | Method for changing the configuration of a running automation device |
US8707282B2 (en) * | 2009-12-14 | 2014-04-22 | Advanced Micro Devices, Inc. | Meta-data based data prefetching |
JP5536593B2 (en) * | 2010-09-01 | 2014-07-02 | インターナショナル・ビジネス・マシーンズ・コーポレーション | Optimization device, optimization method, and compiler program |
US8943487B2 (en) | 2011-01-20 | 2015-01-27 | Fujitsu Limited | Optimizing libraries for validating C++ programs using symbolic execution |
US8869113B2 (en) | 2011-01-20 | 2014-10-21 | Fujitsu Limited | Software architecture for validating C++ programs using symbolic execution |
US8595701B2 (en) * | 2011-02-04 | 2013-11-26 | Fujitsu Limited | Symbolic execution and test generation for GPU programs |
WO2013104504A1 (en) * | 2012-01-12 | 2013-07-18 | Thomson Licensing | Method and device for compiling a source program |
US11449370B2 (en) | 2018-12-11 | 2022-09-20 | DotWalk, Inc. | System and method for determining a process flow of a software application and for automatically generating application testing code |
US11025508B1 (en) | 2020-04-08 | 2021-06-01 | Servicenow, Inc. | Automatic determination of code customizations |
US11296922B2 (en) | 2020-04-10 | 2022-04-05 | Servicenow, Inc. | Context-aware automated root cause analysis in managed networks |
US10999152B1 (en) | 2020-04-20 | 2021-05-04 | Servicenow, Inc. | Discovery pattern visualizer |
US11301435B2 (en) | 2020-04-22 | 2022-04-12 | Servicenow, Inc. | Self-healing infrastructure for a dual-database system |
US11392768B2 (en) | 2020-05-07 | 2022-07-19 | Servicenow, Inc. | Hybrid language detection model |
US11263195B2 (en) | 2020-05-11 | 2022-03-01 | Servicenow, Inc. | Text-based search of tree-structured tables |
US11470107B2 (en) | 2020-06-10 | 2022-10-11 | Servicenow, Inc. | Matching configuration items with machine learning |
US11277359B2 (en) | 2020-06-11 | 2022-03-15 | Servicenow, Inc. | Integration of a messaging platform with a remote network management application |
US11451573B2 (en) | 2020-06-16 | 2022-09-20 | Servicenow, Inc. | Merging duplicate items identified by a vulnerability analysis |
US11379089B2 (en) | 2020-07-02 | 2022-07-05 | Servicenow, Inc. | Adaptable user interface layout for applications |
US11277321B2 (en) | 2020-07-06 | 2022-03-15 | Servicenow, Inc. | Escalation tracking and analytics system |
US11301503B2 (en) | 2020-07-10 | 2022-04-12 | Servicenow, Inc. | Autonomous content orchestration |
US11449535B2 (en) | 2020-07-13 | 2022-09-20 | Servicenow, Inc. | Generating conversational interfaces based on metadata |
US11632300B2 (en) | 2020-07-16 | 2023-04-18 | Servicenow, Inc. | Synchronization of a shared service configuration across computational instances |
US11272007B2 (en) | 2020-07-21 | 2022-03-08 | Servicenow, Inc. | Unified agent framework including push-based discovery and real-time diagnostics features |
US11748115B2 (en) | 2020-07-21 | 2023-09-05 | Servicenow, Inc. | Application and related object schematic viewer for software application change tracking and management |
US11343079B2 (en) | 2020-07-21 | 2022-05-24 | Servicenow, Inc. | Secure application deployment |
US11095506B1 (en) | 2020-07-22 | 2021-08-17 | Servicenow, Inc. | Discovery of resources associated with cloud operating system |
US11582106B2 (en) | 2020-07-22 | 2023-02-14 | Servicenow, Inc. | Automatic discovery of cloud-based infrastructure and resources |
US11275580B2 (en) | 2020-08-12 | 2022-03-15 | Servicenow, Inc. | Representing source code as implicit configuration items |
US11372920B2 (en) | 2020-08-31 | 2022-06-28 | Servicenow, Inc. | Generating relational charts with accessibility for visually-impaired users |
US11245591B1 (en) | 2020-09-17 | 2022-02-08 | Servicenow, Inc. | Implementation of a mock server for discovery applications |
US11625141B2 (en) | 2020-09-22 | 2023-04-11 | Servicenow, Inc. | User interface generation with machine learning |
US11150784B1 (en) | 2020-09-22 | 2021-10-19 | Servicenow, Inc. | User interface elements for controlling menu displays |
US11632303B2 (en) | 2020-10-07 | 2023-04-18 | Servicenow, Inc | Enhanced service mapping based on natural language processing |
US11734025B2 (en) | 2020-10-14 | 2023-08-22 | Servicenow, Inc. | Configurable action generation for a remote network management platform |
US11342081B2 (en) | 2020-10-21 | 2022-05-24 | Servicenow, Inc. | Privacy-enhanced contact tracing using mobile applications and portable devices |
US11258847B1 (en) | 2020-11-02 | 2022-02-22 | Servicenow, Inc. | Assignments of incoming requests to servers in computing clusters and other environments |
US11363115B2 (en) | 2020-11-05 | 2022-06-14 | Servicenow, Inc. | Integrated operational communications between computational instances of a remote network management platform |
US11868593B2 (en) | 2020-11-05 | 2024-01-09 | Servicenow, Inc. | Software architecture and user interface for process visualization |
US11281442B1 (en) | 2020-11-18 | 2022-03-22 | Servicenow, Inc. | Discovery and distribution of software applications between multiple operational environments |
US11693831B2 (en) | 2020-11-23 | 2023-07-04 | Servicenow, Inc. | Security for data at rest in a remote network management platform |
US11216271B1 (en) | 2020-12-10 | 2022-01-04 | Servicenow, Inc. | Incremental update for offline data access |
US11269618B1 (en) | 2020-12-10 | 2022-03-08 | Servicenow, Inc. | Client device support for incremental offline updates |
US11630717B2 (en) | 2021-01-06 | 2023-04-18 | Servicenow, Inc. | Machine-learning based similarity engine |
US11301365B1 (en) | 2021-01-13 | 2022-04-12 | Servicenow, Inc. | Software test coverage through real-time tracing of user activity |
US11418586B2 (en) | 2021-01-19 | 2022-08-16 | Servicenow, Inc. | Load balancing of discovery agents across proxy servers |
US11301271B1 (en) | 2021-01-21 | 2022-04-12 | Servicenow, Inc. | Configurable replacements for empty states in user interfaces |
US11921878B2 (en) | 2021-01-21 | 2024-03-05 | Servicenow, Inc. | Database security through obfuscation |
US11513885B2 (en) | 2021-02-16 | 2022-11-29 | Servicenow, Inc. | Autonomous error correction in a multi-application platform |
US11277369B1 (en) | 2021-03-02 | 2022-03-15 | Servicenow, Inc. | Message queue architecture and interface for a multi-application platform |
US11831729B2 (en) | 2021-03-19 | 2023-11-28 | Servicenow, Inc. | Determining application security and correctness using machine learning based clustering and similarity |
US11640369B2 (en) | 2021-05-05 | 2023-05-02 | Servicenow, Inc. | Cross-platform communication for facilitation of data sharing |
US11635752B2 (en) | 2021-05-07 | 2023-04-25 | Servicenow, Inc. | Detection and correction of robotic process automation failures |
US11635953B2 (en) | 2021-05-07 | 2023-04-25 | Servicenow, Inc. | Proactive notifications for robotic process automation |
US11277475B1 (en) | 2021-06-01 | 2022-03-15 | Servicenow, Inc. | Automatic discovery of storage cluster |
US11762668B2 (en) | 2021-07-06 | 2023-09-19 | Servicenow, Inc. | Centralized configuration data management and control |
US11418571B1 (en) | 2021-07-29 | 2022-08-16 | Servicenow, Inc. | Server-side workflow improvement based on client-side data mining |
US11516307B1 (en) | 2021-08-09 | 2022-11-29 | Servicenow, Inc. | Support for multi-type users in a single-type computing system |
US11960353B2 (en) | 2021-11-08 | 2024-04-16 | Servicenow, Inc. | Root cause analysis based on process optimization data |
US11734381B2 (en) | 2021-12-07 | 2023-08-22 | Servicenow, Inc. | Efficient downloading of related documents |
US12099567B2 (en) | 2021-12-20 | 2024-09-24 | Servicenow, Inc. | Viewports and sub-pages for web-based user interfaces |
US12001502B2 (en) | 2022-01-11 | 2024-06-04 | Servicenow, Inc. | Common fragment caching for web documents |
US11829233B2 (en) | 2022-01-14 | 2023-11-28 | Servicenow, Inc. | Failure prediction in a computing system based on machine learning applied to alert data |
US11582317B1 (en) | 2022-02-07 | 2023-02-14 | Servicenow, Inc. | Payload recording and comparison techniques for discovery |
US11734150B1 (en) | 2022-06-10 | 2023-08-22 | Servicenow, Inc. | Activity tracing through event correlation across multiple software applications |
US11989538B2 (en) | 2022-06-21 | 2024-05-21 | Servicenow, Inc. | Orchestration for robotic process automation |
US12056473B2 (en) | 2022-08-01 | 2024-08-06 | Servicenow, Inc. | Low-code / no-code layer for interactive application development |
US12095634B2 (en) | 2022-08-12 | 2024-09-17 | Servicenow, Inc. | Hybrid request routing system |
US12039328B2 (en) | 2022-09-30 | 2024-07-16 | Servicenow, Inc. | Configuration items for supporting automations and efficacies thereof |
CN118069219A (en) * | 2022-11-23 | 2024-05-24 | 深圳市汇川技术股份有限公司 | Hybrid execution method, device, equipment and medium of programmable logic controller |
US12072775B2 (en) | 2022-12-07 | 2024-08-27 | Servicenow, Inc. | Centralized configuration and change tracking for a computing platform |
Citations (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4636940A (en) * | 1983-03-31 | 1987-01-13 | Hewlett-Packard Company | Logic analyzer using source program or other user defined symbols in the trace specification and the trace listing |
US4667290A (en) | 1984-09-10 | 1987-05-19 | 501 Philon, Inc. | Compilers using a universal intermediate language |
US4667920A (en) * | 1984-10-12 | 1987-05-26 | Daimler-Benz Aktiengesellschaft | Elastic support arrangement for a vehicle fuel pump or the like |
US4686623A (en) * | 1985-06-07 | 1987-08-11 | International Business Machines Corporation | Parser-based attribute analysis |
US4729096A (en) * | 1984-10-24 | 1988-03-01 | International Business Machines Corporation | Method and apparatus for generating a translator program for a compiler/interpreter and for testing the resulting translator program |
US4773007A (en) * | 1986-03-07 | 1988-09-20 | Hitachi, Ltd. | Complier code optimization method for a source program having a first and second array definition and use statements in a loop |
US5201050A (en) * | 1989-06-30 | 1993-04-06 | Digital Equipment Corporation | Line-skip compiler for source-code development system |
US5230050A (en) * | 1989-02-06 | 1993-07-20 | Hitachi, Ltd. | Method of recompiling a program by using result of previous compilation |
US5276881A (en) | 1990-06-25 | 1994-01-04 | Hewlett-Packard Company | ANDF producer using the HPcode-Plus compiler intermediate language |
US5280613A (en) | 1990-06-25 | 1994-01-18 | Hewlett-Packard Company | ANDF installer using the HPcode-Plus compiler intermediate language |
US5307492A (en) * | 1991-03-07 | 1994-04-26 | Digital Equipment Corporation | Mapping assembly language argument list references in translating code for different machine architectures |
US5313614A (en) * | 1988-12-06 | 1994-05-17 | At&T Bell Laboratories | Method and apparatus for direct conversion of programs in object code form between different hardware architecture computer systems |
US5339419A (en) | 1990-06-25 | 1994-08-16 | Hewlett-Packard Company | ANDF compiler using the HPcode-plus compiler intermediate language |
US5347632A (en) | 1988-07-15 | 1994-09-13 | Prodigy Services Company | Reception system for an interactive computer network and method of operation |
US5428792A (en) | 1991-12-12 | 1995-06-27 | International Business Machines Corporation | System for producing language neutral objects and generating an interface between the objects and multiple computer languages |
US5613117A (en) * | 1991-02-27 | 1997-03-18 | Digital Equipment Corporation | Optimizing compiler using templates corresponding to portions of an intermediate language graph to determine an order of evaluation and to allocate lifetimes to temporary names for variables |
US5649204A (en) | 1991-08-22 | 1997-07-15 | Rec Software, Inc. | Method and apparatus for consolidating software module linkage information used for starting a multi-module program |
US5836014A (en) * | 1991-02-27 | 1998-11-10 | Digital Equipment Corporation | Method of constructing a constant-folding mechanism in a multilanguage optimizing compiler |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4905138A (en) * | 1985-10-17 | 1990-02-27 | Westinghouse Electric Corp. | Meta-interpreter |
JPH0766342B2 (en) * | 1985-11-12 | 1995-07-19 | オムロン株式会社 | Program test equipment |
JPS62254237A (en) * | 1986-04-23 | 1987-11-06 | Nec Corp | Inter-printer type branch instruction executing system |
EP0371944A3 (en) * | 1988-11-29 | 1991-11-21 | International Business Machines Corporation | Computer system and method for translating a program |
JPH02308336A (en) * | 1989-05-23 | 1990-12-21 | Nec Corp | Program execution system |
FR2667171B1 (en) * | 1990-09-25 | 1994-08-26 | Gemplus Card Int | PORTABLE MEDIUM WITH EASILY PROGRAMMABLE MICRO-CIRCUIT AND METHOD FOR PROGRAMMING THIS MICRO-CIRCUIT. |
JPH05334093A (en) * | 1992-05-28 | 1993-12-17 | Nec Corp | Symbol managing system for language processor |
-
1992
- 1992-12-22 US US07/994,655 patent/US5367685A/en not_active Expired - Lifetime
-
1993
- 1993-10-14 EP EP01117182A patent/EP1164478A3/en not_active Withdrawn
- 1993-10-14 EP EP99113405A patent/EP0989488A3/en not_active Withdrawn
- 1993-10-14 DE DE69328665T patent/DE69328665T2/en not_active Expired - Lifetime
- 1993-10-14 EP EP93308205A patent/EP0604002B1/en not_active Expired - Lifetime
- 1993-12-07 JP JP5339905A patent/JPH06230976A/en active Pending
-
1996
- 1996-11-21 US US08/755,764 patent/USRE36204E/en not_active Expired - Lifetime
-
1999
- 1999-03-03 US US09/261,970 patent/USRE38104E1/en not_active Expired - Lifetime
Patent Citations (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4636940A (en) * | 1983-03-31 | 1987-01-13 | Hewlett-Packard Company | Logic analyzer using source program or other user defined symbols in the trace specification and the trace listing |
US4667290A (en) | 1984-09-10 | 1987-05-19 | 501 Philon, Inc. | Compilers using a universal intermediate language |
US4667920A (en) * | 1984-10-12 | 1987-05-26 | Daimler-Benz Aktiengesellschaft | Elastic support arrangement for a vehicle fuel pump or the like |
US4729096A (en) * | 1984-10-24 | 1988-03-01 | International Business Machines Corporation | Method and apparatus for generating a translator program for a compiler/interpreter and for testing the resulting translator program |
US4686623A (en) * | 1985-06-07 | 1987-08-11 | International Business Machines Corporation | Parser-based attribute analysis |
US4773007A (en) * | 1986-03-07 | 1988-09-20 | Hitachi, Ltd. | Complier code optimization method for a source program having a first and second array definition and use statements in a loop |
US5442771A (en) | 1988-07-15 | 1995-08-15 | Prodigy Services Company | Method for storing data in an interactive computer network |
US5594910A (en) | 1988-07-15 | 1997-01-14 | Ibm Corp. | Interactive computer network and method of operation |
US5758072A (en) | 1988-07-15 | 1998-05-26 | International Business Machines Corp. | Interactive computer network and method of operation |
US5347632A (en) | 1988-07-15 | 1994-09-13 | Prodigy Services Company | Reception system for an interactive computer network and method of operation |
US5313614A (en) * | 1988-12-06 | 1994-05-17 | At&T Bell Laboratories | Method and apparatus for direct conversion of programs in object code form between different hardware architecture computer systems |
US5230050A (en) * | 1989-02-06 | 1993-07-20 | Hitachi, Ltd. | Method of recompiling a program by using result of previous compilation |
US5201050A (en) * | 1989-06-30 | 1993-04-06 | Digital Equipment Corporation | Line-skip compiler for source-code development system |
US5339419A (en) | 1990-06-25 | 1994-08-16 | Hewlett-Packard Company | ANDF compiler using the HPcode-plus compiler intermediate language |
US5280613A (en) | 1990-06-25 | 1994-01-18 | Hewlett-Packard Company | ANDF installer using the HPcode-Plus compiler intermediate language |
US5276881A (en) | 1990-06-25 | 1994-01-04 | Hewlett-Packard Company | ANDF producer using the HPcode-Plus compiler intermediate language |
US5613117A (en) * | 1991-02-27 | 1997-03-18 | Digital Equipment Corporation | Optimizing compiler using templates corresponding to portions of an intermediate language graph to determine an order of evaluation and to allocate lifetimes to temporary names for variables |
US5836014A (en) * | 1991-02-27 | 1998-11-10 | Digital Equipment Corporation | Method of constructing a constant-folding mechanism in a multilanguage optimizing compiler |
US5307492A (en) * | 1991-03-07 | 1994-04-26 | Digital Equipment Corporation | Mapping assembly language argument list references in translating code for different machine architectures |
US5649204A (en) | 1991-08-22 | 1997-07-15 | Rec Software, Inc. | Method and apparatus for consolidating software module linkage information used for starting a multi-module program |
US5428792A (en) | 1991-12-12 | 1995-06-27 | International Business Machines Corporation | System for producing language neutral objects and generating an interface between the objects and multiple computer languages |
Non-Patent Citations (70)
Title |
---|
"Architecture-Neutral Distribution Format", Open Software Foundation, Cambridge, MA, pp. 1-3. |
1995 Project Summaries: "Software System Support for High Performance Multicomputing", School of Computer Science, Carnegie Mellon University, Jul. 1995, pp. 1-4. |
Adele Goldberg and David Robson, "Smalltalk-80-The Language and its Implementation", Xerox Palo Alto Research Center, 1983 (reprinted with corrections, Jul. 1985) pp. 1-720. |
Ali-Reza Adl-Tabatabai et al., "Efficient and Language-Independent Mobile Programs", Proceedings of PLDI '96, ACM SIGPLAN '96 Conf. on Programming Language Design and Implementation, May, 1996, pp. 1-10. |
Almasi et al., "Highly Parallel Computing", pp. 247-277. |
Andrew Black, Norman Hutchinson, Eric Jul and Henry Levy, "Distribution and Abstract Types in Emerald", University of Washington, Technical Report No. 85-08-05, Aug. 1985, pp. 1-10. |
Andrew Black, Norman Hutchinson, Eric Jul, and Henry Levy, "Object Structure in the Emerald System", University of Washington, Technical Report 86-04-03, Apr. 1986, pp. 1-14. |
Andrew Blaine Proudfoot, "Replects: data replication in the Eden System", Department of Computer Science, University of Washington, Technical Report No. TR-85-12-04, Dec. 1985, pp. 1-156. |
Andrew P. Black and Henry M. Levy, "A Language for Distributed Programming", Department of Computer Science, University of Washington, Technical Report 86-02-03, Feb. 1986, p. 10. |
Andrew P. Black, "Supporting Distributed Applications: Experience with Eden", Department of Computer Science, University of Washington, Technical Report 85-03-02, Mar. 1985, pp. 1-21. |
Andrew P. Black, "The Eden Programming Language", Department of Computer Science, FR-35, University of Washington, Technical Report 85-09-01, Sep. 1985 (Revised, Dec. 1985), pp. 1-19. |
Andrew P. Black, "The Eden Project: Overview and Experiences", Department of Computer Science, University of Washington, EUUG, Autumn '86 Conference Proceedings, Manchester, UK, Sep. 22-25 1986, pp. 177-189. |
Andrew P. Black, Edward D. Lazowska, Jerre D. Noe and Jan Sanislo, "The Eden Project: A Final Report", Department of Computer Science, University of Washington, Technical Report 86-11-01, Nov. 1986, pp. 1-28. |
Anklam et al., "Engineering a Compiler, VAX-11 Code Generation and Optimization", 1982 Digital Equipment Corporation, pp. 124-137. |
Ann Sussman, "OSF Eyes Shrink-Wrap RFT", Unix Today, pp. 1, 43. |
Bolosky, et al., "Operating System Directions for the Next Millennium", Microsoft Research, Redmond, WA, pp. 1-7. |
Budd, Timothy, "A Little Smalltalk," Oregon State University, Addison-Wesley Publishing Company, 1987, Chap. 13, pp. 150-160, Chapter 14, pp. 161-175, Chapter 15, pp. 176-192. |
Calton Pu, "Replication and Nested Transactions in the Eden Distributed System", Doctoral Disseration, University of Washington, Aug. 6, 1986, pp. 1-179 (1 page Vita). |
Cara Holman and Guy Almes, "The Eden Shared Calendar System", Department of Computer Science, FR-35, University of Washington, Technical Report 85-05-02, Jun. 22, 1985, pp. 1-14. |
Chung, Kin-Man and Yuen, Herbert, "A "Tiny' Pascal Compiler: Part 2: The P-Compiler," BYTE Publications, Inc., Oct. 1978. |
Chung, Kin-Man and Yuen, Herbert, "A "Tiny' Pascal Compiler: the P-Code Interpreter," BYTE Publications, Inc., Sep. 1978. |
Chung, Kin-Man and Yuen, Herbert, "A ‘Tiny’ Pascal Compiler: Part 2: The P-Compiler," BYTE Publications, Inc., Oct. 1978. |
Chung, Kin-Man and Yuen, Herbert, "A ‘Tiny’ Pascal Compiler: the P-Code Interpreter," BYTE Publications, Inc., Sep. 1978. |
Colusa Software White Paper: "Omniware Technical Overview", Colusa Software, Inc., 1995, pp. 1-14. |
Colusa Software White Paper: Omniware: A Universal Substrate for Mobile Code: Colusa Software, Inc., pp. 1-13. |
Deutsch, L. Peter, et al., "Efficient Implementation of the Smartalk-80 System," Conference Record of the Eleventh Annual ACM Symposium on Principles of Programming Languages, Jan. 15-18, 1984, pp. 297-302. |
Engelstad et al., "A Dynamic C-Based Object-Oriented System for UNIX", IEEE Software, May, 1991, pp. 73-85. |
Engelstad, Steve, et al., "A Dynamic C-Based Object-Oriented System for Unix," Software, May 1991, pp. 73-85. |
Eric Jul, "Object Mobility in a Distributed Object-Oriented System", a Dissertation, University of Washington, 1989, pp. 1-154 (1 page Vita). |
Eric Jul, Henry Levy, Norman Hutchinson, and Andrew Black, "Fine-Grained Mobility in the Emerald System", University of Washington, ACM Transactions on Computer Systems, vol. 6, No. 1, Feb. 1988, pp. 109-133. |
Ernst et al., "Code Compression", 1997, pp. 358-365. |
Evan Grossman, "OSF Adds Ingredients to Operating System", PC Week, Mar. 27, 1989. |
Felix Samson Hsu, "Reimplementing Remote Procedure Calls", University of Washington, Thesis Mar. 22, 1985, pp. 1-106. |
Fischer et al., "Crafting a Compiler", 1988, pp. 551-555, 632-641. |
Gary McWilliams, "Digital's Architectural Gamble", Datamation, Mar., 1989, pp. 14-24. |
Gerring, et al., "S-1 U-Code, A Universal P-Code for the S-1 Project (PAIL-6)", Stanford University, Computer Science Department, Technical Note No. 159, Aug., 1979, pp. 1-7. |
Glanville et al., "A New Method for Compiler Code Generation (Extended Abstract)", Computer Science Division, University of California, Berkeley, CA, pp. 231-240. |
Goldberg et al., "Smalltalk-80: The Language and Its Implementation", Addison-Wesley, Reading, MA, 1983, pp. 594-598. |
Goldberg, Adele and Robson, David, "Smalltalk-80: The Language," ParcPlace Systems and Xerox PARC, Addison-Wesley Publishing Company, 1989, Chap. 21, pp. 417-442. |
Goldberg, Adele and Robson, David, "Smalltalk—80: The Language," ParcPlace Systems and Xerox PARC, Addison-Wesley Publishing Company, 1989, Chap. 21, pp. 417-442. |
Graham et al., "Adaptable Binary Programs", 1995 Usenix Technical Conference-Jan., 1995, New Orleans, LA, pp. 315-325. |
Graham et al., "Adaptable Binary Programs", 1995 Usenix Technical Conference—Jan., 1995, New Orleans, LA, pp. 315-325. |
Guy Almes, Andrew Black, Carl Bunje and Douglas Wiebe, "Edmas: A locally Distributed Mail System", Department of Computer Science, University of Washington, Technical Report 83-87-01, Jul. 7, 1983, Abstract & pp. 1-17. |
Guy T. Almes, "Integration and Distribution in the Eden System", Department of Computer Science, University of Washington, Technical Report 83-01-02, Jan. 19, 1983, pp. 1-18 & Abstract. |
Guy T. Almes, "The Evolution of th Eden Invocation Mechanism", Department of Computer Science, University of Washington, Technical Report 83-01-03, Jan. 19, 1983, pp. 1-14 & Abstract. |
Guy T. Almes, Andrew P. Black, Edward D. Lazawska, and Jerre D. Noe, "The Eden System: A Technical Review", Department of Computer Science, University of Washington, Technical Report 83-10-05, Oct. 1983, pp. 1-25. |
Guy T. Almes, Michael J. Fischer, Hellmut Golde, Edward D. Lazawska, Jerre D. Noe, "Research in Integrated Distributed Computing", Department of Computer Science, University of Washington, Oct. 1979, pp. 1-42. |
Inder-jeet S. Gujral, "Retargetable Code Generation for ADA* Compilers", SoftTech, Inc., Waltham, MA, Dec., 1981, pp. 1-13. |
Krasner et al., "Smalltalk-80: Bits of History, Words of Advice", 1983 Xerox Corporation, pp. 1-344. |
Krasner, Glenn, "The Smalltalk-80 Virtual Machine" BYTE Publications Inc., Aug. 1991, pp. 300-320. |
Lucco et al., "Omniware: A Universal Substrate for Web Programming", pp. 1-11. |
McDaniel, Gene, "An Analysis of a Mesa Instruction Set," Xerox Corporation, May 1982. |
Mitchell, James G., Maybury, William, and Sweet, Richard, Mesa Language Manual, Xerox Corporation. |
Nori et al., "The Pascal <P> Compiler: Implementation Notes", Jul. 1976, pp. 1-53. |
Norman C. Hutchinson, "Emerald: An Object-Based Language for Distributed Programming", a Dissertation, University of Washington, 1987, pp. 1-107. |
Peter Deutsch et al., "Efficient Implementation of the Smalltalk-80 System", 1983, pp. 297-302. |
Peter Nye, U-CODE: An Intermediate Language for Pascal and Fortran (PAIL-8), Feb. 16, 1980, pp. 1-37-2. |
Pier, Kenneth A., "A Retrospective on the Dorado, A High-Performance Personal Computer," IEEE Conference Proceedings, The 10th Annual International Symposium on Computer Architecture, 1983. |
Pier, Kenneth A., "A Retrospective on the Dorado, A High-Performance Personal Computer," Xerox Corporation, Aug. 1983. |
Proceedings of the Eighth Symposium on Operating Systems Principles, Dec. 14-16, 1981, ACM, Special Interest Group on Operating Systems, Association for Computing Machinery, vol. 15, No. 5, Dec. 1981, ACM Order No. 534810. |
Richard L. Sites and Daniel R. Perkins, "Universal P-Code Definition, version (0.3)," Dept. of Electrical Engineering and Computer Sciences, University of California at San Diego, Jul., 1979, pp. 1-40. |
Richard L. Sites et al., "Machine-Independent Pascal Optimizer Project," UCSD/CS-79/038, Nov. 1979, pp. 1-94. |
Sawdon et al., "A Preliminary Report on Software Prefetching in the Instruction Stream", School of Computer Science, Carnegie Mellon University, Pittsburgh, PA, pp. 1-7. |
Sites et al., Universal P-Code Definition, Version 0.3, Department of Electrical Engineering and Computer Sciences, University of California at San Diego, Jul. 1979, pp. 5-9. |
Steven Lucco, "High-Performance Microkernel Systems", School of Computer Science, Carengie Mellon University. p. 1. |
Tanenbaum et al., "A Practical Tool Kit for Making Portable Compilers", Computing Practices, Communications of the ACM, Sep., 1983, vol. 26, No. 9, pp. 654-660. |
Thompson, Ken, "Regular Expression Search Algorithm," Communications of the ACM, vol. II, No. 6, p. 149 et seq., Jun. 1968. |
Wahbe et al., "Efficient Software-Based Fault Isolation", Computer Science Division, University of California, Berkeley, CA, pp. 203-216. |
Wm. A. Wulf, "PQCC: A Machine-Relative Compiler Technology," Carnegie-Mellon University, Pittsburgh, PA, Sep. 1980, pp. 1-22. |
Wolf et al., "Portable Compiler Eases Problems of Software Migration", System Design/Software, pp. 147-153. |
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6785683B1 (en) * | 2000-07-06 | 2004-08-31 | International Business Machines Corporation | Categorization and presentation tool for code resources |
US8468506B2 (en) * | 2002-07-10 | 2013-06-18 | Micron Technology, Inc. | Method and system for generating object code to facilitate predictive memory retrieval |
US20060130023A1 (en) * | 2002-07-10 | 2006-06-15 | Klein Dean A | Method and system for generating object code to facilitate predictive memory retrieval |
US9858079B2 (en) | 2002-07-10 | 2018-01-02 | Micron Technology, Inc. | Method and system for generating object code to facilitate predictive memory retrieval |
US9170781B2 (en) | 2002-07-10 | 2015-10-27 | Micron Technology, Inc. | Method and system for generating object code to facilitate predictive memory retrieval |
US7840952B2 (en) * | 2002-07-10 | 2010-11-23 | Micron Technology, Inc. | Method and system for generating object code to facilitate predictive memory retrieval |
US20110055527A1 (en) * | 2002-07-10 | 2011-03-03 | Klein Dean A | Method and system for generating object code to facilitate predictive memory retrieval |
US9304750B2 (en) | 2002-07-11 | 2016-04-05 | Micron Technology, Inc. | System and method for processor with predictive memory retrieval assist |
US20100115221A1 (en) * | 2002-07-11 | 2010-05-06 | Klein Dean A | System and method for processor with predictive memory retrieval assist |
US7483757B2 (en) * | 2005-07-22 | 2009-01-27 | Honeywell International, Inc. | Control system migration |
US20070021852A1 (en) * | 2005-07-22 | 2007-01-25 | Honeywell International Inc. | Control system migration |
US10503525B2 (en) | 2017-08-22 | 2019-12-10 | Refinitiv Us Organization Llc | Apparatuses, methods and systems for persisting values in a computing environment |
US11068282B2 (en) | 2017-08-22 | 2021-07-20 | Refinitiv Us Organization Llc | Apparatuses, methods and systems for persisting values in a computing environment |
US11809839B2 (en) | 2022-01-18 | 2023-11-07 | Robert Lyden | Computer language and code for application development and electronic and optical communication |
Also Published As
Publication number | Publication date |
---|---|
EP0604002A3 (en) | 1995-04-26 |
EP0604002B1 (en) | 2000-05-17 |
EP1164478A2 (en) | 2001-12-19 |
JPH06230976A (en) | 1994-08-19 |
EP0989488A2 (en) | 2000-03-29 |
EP1164478A3 (en) | 2011-12-07 |
US5367685A (en) | 1994-11-22 |
EP0604002A2 (en) | 1994-06-29 |
DE69328665T2 (en) | 2001-01-11 |
USRE36204E (en) | 1999-04-27 |
EP0989488A3 (en) | 2009-04-15 |
DE69328665D1 (en) | 2000-06-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
USRE38104E1 (en) | Method and apparatus for resolving data references in generated code | |
US6434742B1 (en) | Symbol for automatically renaming symbols in files during the compiling of the files | |
US6378126B2 (en) | Compilation of embedded language statements in a source code program | |
US7120898B2 (en) | Intermediate representation for multiple exception handling models | |
US5884083A (en) | Computer system to compile non-incremental computer source code to execute within an incremental type computer system | |
US5586328A (en) | Module dependency based incremental compiler and method | |
US5590331A (en) | Method and apparatus for generating platform-standard object files containing machine-independent code | |
Johnson et al. | TS: An optimizing compiler for Smalltalk | |
US5175856A (en) | Computer with integrated hierarchical representation (ihr) of program wherein ihr file is available for debugging and optimizing during target execution | |
US5680622A (en) | System and methods for quickly detecting shareability of symbol and type information in header files | |
US7725883B1 (en) | Program interpreter | |
US5606697A (en) | Compiler system for language processing program | |
CA2078247C (en) | Source code analyzer | |
NZ241693A (en) | Compiling computer code: elements of intermediate language flow graph include indications of effects and dependencies on other elements | |
WO1993025964A1 (en) | Computer program debugging in the presence of compiler synthesized variables | |
US20070074185A1 (en) | Identifier expressions | |
US20230367569A1 (en) | Method of generating a representation of a program logic, decompilation apparatus, recompilation system and computer program products | |
Hornof et al. | Accurate binding-time analysis for imperative languages: Flow, context, and return sensitivity | |
Merrill | Parsing Non‐LR (k) grammars with yacc | |
Freiburghouse | The multics PL/1 compiler | |
MacLaren | Inline routines in VAXELN Pascal | |
Tolmach | Combining closure conversion with closure analysis using algebraic types | |
Strawn | Does APL really need run‐time parsing? | |
Pahade et al. | Introduction to Compiler and its Phases | |
Proebsting et al. | A new implementation of the Icon language |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
CC | Certificate of correction | ||
RR | Request for reexamination filed |
Effective date: 20110215 |
|
FPB1 | Reexamination decision cancelled all claims |