← Back to Patent Explorer
US5313614A Expired / Lapsed US ⏱️ 0.0 years remaining

Method and apparatus for direct conversion of programs in object code form between different hardware architecture computer systems

Assignee: Nokia Bell Labs
•
Filing: 1988-12-06
•
Granted: 1994-05-17
•
Expires: 2008-12-06
📄 Original PDF 🌐 Google Patents 🔄 Sync Now

Abstract

Abstract Application programs compiled for a first, "source", computer are translated, from their object form, for execution on a second, "target", computer. The translated application programs are linked or otherwise bound with a translation of the source computer system software. The translated system software operates on the image of the source computer address space in the target computer exactly as it did in the source computer. The semantics of the source computer system software are thus preserved identically. In addition, a virtual hardware environment is provided in the target computer to manage events and to deal with differences in the address space layouts between the source and target computers.

Inventors

  • 👤 John C. Goettelmann
  • 👤 Christopher J. Macey

Bibliographic Details

Application Number —
Jurisdiction US
Data Source google_patents
Last Synchronized 2026-10-23 19:59
CPC Classifications
G; G06; G06F; G06F8/00; G06F8/40; G06F8/52

Claims Analysis

Total Claims: 4
Claim 1
Independent Claim 402 words
A method for use in a computer system for processing a first version of a non-source-code computer program expressed in terms of a first instruction set, at least ones of the instructions of said first instruction set having primary and side effects, said method comprising the computer-implemented steps of: expanding each of at least ones of the instructions of said non-source-code first version into a plurality of instructions which explicitly replicate the primary and side effects of said each instruction of said first version, and processing the resulting expanded version to eliminate individual ones of the instructions thereof whose elimination does not affect the functionality of said program, said processing step including the step of performing data flow analysis over said expanded version to identify said individual instructions, and including the further step of identifying procedures within said expanded version, said data flow analysis step being performed globally over said expanded version on a procedure-by-procedure basis, each of said procedures being comprised of all basic blocks within said expanded version reachable from a respective procedure head block a) which are not themselves procedure head blocks and b) to which flow of control does not pass through any intermediate procedure head block, a basic block being a sequence of instructions of said expanded version that has exactly one instruction at which control can enter the sequence during execution and exactly one instruction at which control leaves the sequence during execution, and a procedure head block being a basic block whose entry point is either an entry point of said expanded version or is the target of a call instruction thereof, at least ones of said procedures including definitions of values of variables, which values have uses in at least one other procedure, and said data flow analysis step including the step of associating such definitions with such uses, said processing step further including the step of creating a call tree identifying the calling relationships among said procedures, and said associating step including the sequential steps of processing said procedures in forward call tree order to create a list of those variables used in a procedure that a) are at least potentially defined by a procedure called thereby and b) are used, after the call, in the calling procedure, and processing said procedures in reverse call tree order to exclude from said list those variables which are not actually defined by the call procedure.
Claim 2
Independent Claim 402 words
A method for use in a computer system for processing a first version of a non-source-code computer program expressed in terms of a first instruction set, at least ones of the instructions of said first instruction set having primary and side effects, said method comprising the computer-implemented steps of: expanding each of at least ones of the instructions of said non-source-code first version into a plurality of instructions which explicitly replicate the primary and side effects of said each instruction of said first version, and processing the resulting expanded version to eliminate individual ones of the instructions thereof whose elimination does not affect the functionality of said program, said processing step including the step of performing data flow analysis over said expanded version to identify said individual instructions, and including the further step of identifying procedures within said expanded version, said data flow analysis step being performed globally over said expanded version on a procedure-by-procedure basis, each of said procedures being comprised of all basic blocks within said expanded version reachable from a respective procedure head block a) which are not themselves procedure head blocks and b) to which flow of control does not pass through any intermediate procedure head block, a basic block being a sequence of instructions of said expanded version that has exactly one instruction at which control can enter the sequence during execution and exactly one instruction at which control leaves the sequence during execution, and a procedure head block being a basic block whose entry point is either an entry point of said expanded version or is the target of a call instruction thereof, at least ones of said procedures including definitions of values of variables, which values have uses in at least one other procedure, and said data flow analysis step including the step of associating such definitions with such uses, said processing step further including the step of creating a call tree identifying the calling relationships among said procedures, and said associating step including the sequential steps of processing said procedures in forward call tree order to create a list of those variables used in a procedure that a) are at least potentially defined by a procedure called thereby and b) are used, after the call, in the calling procedure, and processing said procedures in reverse call tree order to exclude from said list those variables which are not actually defined by the call procedure.
Claim 3
Independent Claim 395 words
An apparatus for processing a first version of a non-source-code computer program expressed in terms of a first instruction step, at least ones of the instructions of said first instruction set having primary and side effects, comprising: means for expanding each of at least ones of the instructions of said non-source-code first version into a plurality of instructions which explicitly replicate the primary and side effects of said each instructions of said first version, and means for processing the resulting expanded version to eliminate individual ones of the instructions thereof whose elimination does not affect the functionality of said program, said means for processing comprising a means for performing data flow analysis over said expanded version to identify said individual instructions and comprising further a means for identifying procedures within said expanded version, said data flow analysis being performed globally over said expanded version on a procedure-by-procedure basis, each of said procedures being comprised of all basic blocks within said expanded version reachable from a respective procedure head block a) which are not themselves procedure head blocks and b) to which flow of control does not pass through any intermediate procedure head block, a basic block being a sequence of instructions of said expanded version that has exactly one instruction at which control can enter the sequence during execution and exactly one instruction at which control leaves the sequence during execution, and a procedure head block being a basic block whose entry point is either an entry point of said expanded version or is the target of a call instruction thereof, at least ones of said procedures including definitions of values of variables, which values have uses in at least one other procedure, and said data flow analysis means comprising a means of associating such definitions with such uses, said processing means further comprising a means for creating a call tree identifying the calling relationships among said procedures, said associating means comprising: a means for processing said procedures in forward call tree order to create a list of those variables used in the procedure that (a) are at least potentially defined by a procedure called thereby and (b) are used, after the call, in the calling procedure, and a means for processing said procedures in reverse call tree order to exclude from said list those variables which are not actually defined by the call procedure.
Claim 4
Independent Claim 395 words
An apparatus for processing a first version of a non-source-code computer program expressed in terms of a first instruction step, at least ones of the instructions of said first instruction set having primary and side effects, comprising: means for expanding each of at least ones of the instructions of said non-source-code first version into a plurality of instructions which explicitly replicate the primary and side effects of said each instructions of said first version, and means for processing the resulting expanded version to eliminate individual ones of the instructions thereof whose elimination does not affect the functionality of said program, said means for processing comprising a means for performing data flow analysis over said expanded version to identify said individual instructions and comprising further a means for identifying procedures within said expanded version, said data flow analysis being performed globally over said expanded version on a procedure-by-procedure basis, each of said procedures being comprised of all basic blocks within said expanded version reachable from a respective procedure head block a) which are not themselves procedure head blocks and b) to which flow of control does not pass through any intermediate procedure head block, a basic block being a sequence of instructions of said expanded version that has exactly one instruction at which control can enter the sequence during execution and exactly one instruction at which control leaves the sequence during execution, and a procedure head block being a basic block whose entry point is either an entry point of said expanded version or is the target of a call instruction thereof, at least ones of said procedures including definitions of values of variables, which values have uses in at least one other procedure, and said data flow analysis means comprising a means of associating such definitions with such uses, said processing means further comprising a means for creating a call tree identifying the calling relationships among said procedures, said associating means comprising: a means for processing said procedures in forward call tree order to create a list of those variables used in the procedure that (a) are at least potentially defined by a procedure called thereby and (b) are used, after the call, in the calling procedure, and a means for processing said procedures in reverse call tree order to exclude from said list those variables which are not actually defined by the call procedure.

References Cited (Backward Citations)

US4586158A Cited
US4692896A Cited
US4667290A Cited
US4751740A Cited
US4791558A Cited
US4951195A Cited

USPTO Annuity & Maintenance Windows

Annuity Stage Window Opens Payment Deadline Surcharge Period Until Estimated Fee Status
3.5 Years (Year 4) 1997-05-16 1997-11-15 1998-05-17 $2000.00 Window Closed / Lapsed
7.5 Years (Year 8) 2001-05-16 2001-11-15 2002-05-17 $3760.00 Window Closed / Lapsed
11.5 Years (Year 12) 2005-05-16 2005-11-15 2006-05-17 $7700.00 Window Closed / Lapsed

Assigned Categories & Tags

No categories assigned to this patent yet.

Assign Category Tag