U.S. patents available from 1976 to present.
U.S. patent applications available from 2005 to present.

Use of stack depth to identify architechture and calling standard dependencies in machine code

Patent 5301325 Issued on April 5, 1994. Estimated Expiration Date: Icon_subject April 5, 2011. Estimated Expiration Date is calculated based on simple USPTO term provisions. It does not account for terminal disclaimers, term adjustments, failure to pay maintenance fees, or other factors which might affect the term of a patent.

Patent References

Real-time tracing of dynamic local data in high level languages in the presence of process context switches Patent #: 5127103
Issued on: 06/30/1992
Inventor: Hill, et al.

Inventor

Assignee

Application

No. 666083 filed on 03/07/1991

US Classes:

717/159, Code restructuring714/38, Of computer software717/128, Tracing717/132, Using program flow graph717/147, Platform-independent form (e.g., abstract code)717/156Using flow graph

Examiners

Primary: Shaw, Gareth D.
Assistant: Chaki, Kakali

Attorney, Agent or Firm

Foreign Patent References

  • 0372835 EP. 06/23/1990
  • WO90/1738 WO. 02/23/1990

International Classes

G06F 009/45
G06F 011/00

Abstract

A code translator, constructed similar to a compiler, accepts as an input to be translated the assembly code written for one architecture (e.g., VAX), and produces as an output object code for a different machine architecture (e.g., RISC). The input code is converted into an intermediate language, and a flow graph is constructed. The flow graph is referenced by a flow analyzer for recognizing certain architecture-specific and calling standard-specific coding practices or idioms that cannot be automatically converted, particularly relating to stack usage, register usage, condition codes, and passing arguments for procedure calls. By tracking stack usage within routines, the compiler can distinguish up-level stack and return address references from valid local references. Also, it can inform the user of stack misalignment, which has a severe performance penalty, and can detect code segments where different flow paths may result in different stack depths at runtime, which may indicate a source code error. Register usage is likewise tracked to determine which registers are destroyed by a routine, and generate routine prologue and epilogue code which performs register saves, as well as provide register "hints" to aid the user in adding an entry point declaration or documentation for the routine. The usage of condition codes is likewise tracked, by a backward walk through the flow graph, so that code to fabricate needed values is generated. In addition, all argument pointer based memory references in the input code is tracked to determine how the same argument reference may be made in the target environment.

Other References

  • Banning, "The XDOS Binary Code Conversion System", COMPCON 89, Feb. 27, 1989, San Francisco, pp. 282-287
  • Hunter et al., "DOS at RISC", Byte Magazine, vol. 14, No. 12, Nov. 1989, pp. 361-36
PatentsPlus Images
Enhanced PDF formats
loading...
PatentsPlus: add to cart
PatentsPlus: add to cartSearch-enhanced full patent PDF image
$9.95more info
PatentsPlus: add to cart
PatentsPlus: add to cartIntelligent turbocharged patent PDFs with marked up images
$16.95more info
 
Sign InRegister
Username  
Password   
forgot password?