Patent ReferencesInvalid instruction code detector Method of developing formal identities and program bases in an optimizing compiler Compilers using a universal intermediate language Method for improving the efficiency of arithmetic code generation in an optimizing compiler using the technique of reassociation Condition code graph analysis for simulating a CPU processor APL-to-Fortran translators Method and apparatus for generating program code files Patent #: 5159687 InventorAssigneeApplicationNo. 666082 filed on 03/07/1991US Classes:717/159, Code restructuring717/147, Platform-independent form (e.g., abstract code)717/156Using flow graphExaminersPrimary: Chan, Eddie P.Attorney, Agent or FirmForeign Patent References
International ClassesG06F 009/45G06F 009/00 AbstractA 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
| |