| United States Patent | 6,802,056 |
| Chaiken , et al. | October 5, 2004 |
Each component binary in a heterogeneous program is translated from a platform-specific instruction set into a set of intermediate representation (IR) instructions that are platform-neutral. The IR instructions are grouped into IR code blocks, the IR code blocks into IR procedures, and the IR procedures into IR components to create an intermediate representation hierarchy for the program. An application program interface is provided that permits user access to the IR hierarchy for instrumentation, optimization, navigation, and manipulation of the IR hierarchy. The transformed IR hierarchy is then translated into platform-specific instructions and output as a modified binary. The user can designate a different platform for the output translation of a code block than the platform for which the code block was originally written. Prologue and epilog code is added to contiguous blocks that are translated into different architectures. The modified binary can be iterated through the translation and transformation process to produce multiple versions of the heterogeneous program.
| Inventors: | Chaiken; Ronnie I. (Woodinville, WA), Chan; Hon Keat W. (Bellevue, WA), Edwards; Andrew J. (Redmond, WA), Eigsti; Gregory A. (Redmond, WA), Gillies; David M. (Bellevue, WA), Kuramoto; Bruce M. (Bellevue, WA), Lefor; John A. (Bellevue, WA), Pierce; Ken B. (Bellevue, WA), Srivastava; Amitabh (Woodinville, WA), Vo; Hoi H. (Bellevue, WA), Yuval; Gideon A. (Mercer Island, WA) |
| Assignee: |
Microsoft Corporation
(Redmond,
WA)
|
| Appl. No.: | 09/343,805 |
| Filed: | June 30, 1999 |
| Current U.S. Class: | 717/136 ; 717/137; 717/146; 717/147 |
| Current International Class: | G06F 9/45 (20060101); G06F 9/44 (20060101); G06F 009/45 () |
| Field of Search: | 717/136-143,146-158 |
| 5175856 | December 1992 | Van Dyke et al. |
| 5339435 | August 1994 | Lubkin et al. |
| 5500947 | March 1996 | Uhler et al. |
| 5539907 | July 1996 | Srivastava et al. |
| 5559884 | September 1996 | Davidson et al. |
| 5661191 | August 1997 | Haraguchi et al. |
| 5664191 | September 1997 | Davidson et al. |
| 5790858 | August 1998 | Vogel |
| 5966539 | October 1999 | Srivastava |
| 5970490 | October 1999 | Morgenstern |
| 6158045 | December 2000 | You |
| 6289505 | September 2001 | Goebel |
| 6298391 | October 2001 | Kennedy et al. |
| 6345311 | February 2002 | Breslau et al. |
| 0501613 | Sep., 1992 | EP | |||
| 0510616 | Oct., 1992 | EP | |||
| WO91/20030 | Dec., 1991 | WO | |||
De Bosschere, K., et al., "Alto: A Link-Time Optimizer for the DEC Alpha.", Technical Report TR-98-14, (1996). . Goodwin, D.W., "Interprocedural Dataflow Analysis in an Executable Optimizer", Proceedings on Sigplan'97 Conference on Programming Language Design and Implementation, (1997). . Hastings, R., et al., "Purify: Fast Detection of Memory Leaks and Access Errors", Proceedings of Winter Usenix Conference,, (Jan. 1992). . Larus, J., et al., "Rewriting Executable Files to Measure Profeam Behavior", Software Practice and Experience, 24 (2), 197-218, (1994). . Larus, J.R., "EEL: Machine-Independent Executable Editing", ACM Sigplan Notices,30 (6), pp. 291-300, (Jun. 1995). . Lee, H., et al., "BIT: A Tool for Instrumenting Java Bytecodes", Proceedings of the 1997 Usenix Symposium pn Internet Technologies and Systems, (1997). . Romer, T., et al., "Instrumentation and Optimization of Win32/Intel Executables Using Etch", Proceedings of the Usenix Windows NT Workshop, (1997). . Srivastava, A., et al., "A Practical System for Intermodule Code Optimization at Link Time", Journal of Programming Language, 1(1), 1-18, (1993). . Srivastava, A., et al., "Atom, A System for Buidling Customized Program Analysis Tools", ACM Sigplan Notices, 29 (6), pp. 196-205, (Jun. 1994). . Wall, D.W., "Systems of Late Code Modification, in Code Genetatio-Concepts, Tools Technique", Robert Giegrich and Susan L. Graham, eds, 275-293, (1992).. |