John Samuel Pieper - Mont Vernon NH Steven Orodon Hobbs - Westford MA Stephen Corridon Root - Westboro MA
Assignee:
Hewlett-Packard Development Company, L.P. - Houston TX
International Classification:
G06F 945
US Classification:
717141, 717131, 717142, 717154, 712235, 712237
Abstract:
A technique is provided for inserting memory prefetch instructions only at appropriate locations in program code. The instructions are inserted into the program code such that, when the code is executed, the speed and efficiency of execution of the code may be improved, cache conflicts arising from execution of the prefetch instruction may be substantially eliminated, and the number of simultaneously-executing memory prefetch operations may be limited to prevent stalling and/or overtaxing of the processor executing the code.
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
Caroline S. Davidson - Hollis NH Richard B. Grove - Westford MA Steven O. Hobbs - Westford MA
Assignee:
Digital Equipment Corporation - Maynard MA
International Classification:
G06F 300 G06F 500
US Classification:
395708
Abstract:
A compiler framework uses a generic "shell" and a generic back end (where the code generator is target-specific). The generic back end provides the functions of optimization, register and memory allocation, and code generation. The code generation function of the back end may be targeted for any of a number of computer architectures. A front end is tailored for each different source language, such as Cobol, Fortran, Pascal, C, C++, etc. The front end scans and parses the source code modules, and generates from them an intermediate language representation of the source code programs expressed in the source code. The intermediate language represents any of the source code languages in a universal manner, so the interface between the front end and back end is of a standard format, and need not be rewritten for each language-specific front end. A feature is a method for doing code generation using code templates in a multipass manner. The selection and application of code templates occurs at four different times during the compilation process: (1) A pattern select phase does a pattern match in a context pass to select the best code templates; (2) Tasks of the context pass use context actions of the selected templates to analyze the evaluation order to expressions and to allocate temporary names; (3) A bind pass uses the binding actions of the selected templates to allocate template names; (4) Finally, a code pass uses code generation actions of the selected templates to guide the generation of object code.
Compiler Back End Calling Predetermined Front End Routines That Use Effect And Dependency Indicators To Provide Information To The Compiler To Determine The Validity Of An Optimization
Robert N. Faiman - Wilton NH David S. Blickstein - Hudsoon NH Steven O. Hobbs - Westford MA
Assignee:
Digital Equipment Corporation - Maynard MA
International Classification:
G06F 300 G06F 500
US Classification:
395700
Abstract:
A compiler framework uses a generic "shell" and a generic back end (where the code generator is target-specific). The generic back end provides the functions of optimization, register and memory allocation, and code generation. The code generation function of the back end may be targeted for any of a number of computer architectures. A front end is tailored for each different source language, such as Cobol, Fortran, Pascal, C, C++, etc. The front end scans and parses the source code modules, and generates from them an intermediate language representation of the source code programs expressed in the source code. The intermediate language represents any of the source code languages in a universal manner, so the interface between the front end and back end is of a standard format, and need not be rewritten for each language-specific front end. A feature is a mechanism for representing effects and dependencies in the interface between front end and back end. An element has an effect if it writes to memory, and has a dependency if it reads from a location which some other node may write to.
Images: 1) Gale Craters topography with an oval representing the region Curiosity might land. (NASA) 2) The Curiosity rover, formerly called the Mars Science Laboratory or MSL. (NASA/JPL-Caltech) 3) Illustration of Gale Crater. (Steven Hobbs)