A generic approach to integrating automatic code generation and register allocation
Kelvin S. Bryant
Abstract
Kelvin S. Bryant
Abstract
This thesis presents methods for modifying existing code generator generators (CGGs) so that they create efficient code generators with register coloring for Complex Instruction Set Computers (CISC) and Reduced Instruction Set Computers (RISC). Existing compiler tools allow the automatic generation of new code generators, however, most of these have poor register allocation support or no support at all. In addition, some CGGs do not include a costing phase to guide the code selector, which limits their usefulness in CISC environments. The developed approach, termed Generic Register Allocation System (GRAS), augments existing CGG input formats with additional register information so that the CGG has the necessary machine specifics to produce good register allocators. A Prepass before the register allocator provides the allocator with information about the specific register requirements of the current program. Details are also presented on how to generalize existing register coloring algorithms to complement this general approach.
OpenAlex reports 1 citations for this work. Citation counts describe recorded attention and do not establish research quality.
A contribution statement is not available in the OpenAlex record.
Method details are not available in the OpenAlex metadata.
Findings are not separately available in the OpenAlex metadata.
Limitations are not available in the OpenAlex metadata.
Application details are not available in the OpenAlex metadata.
This thesis presents methods for modifying existing code generator generators (CGGs) so that they create efficient code generators with register coloring for Complex Instruction Set Computers (CISC) and Reduced Instruction Set Computers (RISC). Existing compiler tools allow the automatic generation of new code generators, however, most of these have poor register allocation support or no support at all. In addition, some CGGs do not include a costing phase to guide the code selector, which limits their usefulness in CISC environments. The developed approach, termed Generic Register Allocation System (GRAS), augments existing CGG input formats with additional register information so that the CGG has the necessary machine specifics to produce good register allocators. A Prepass before the register allocator provides the allocator with information about the specific register requirements of the current program. Details are also presented on how to generalize existing register coloring algorithms to complement this general approach.
Key concepts: Register allocation, Allocator, Computer science, Code generation, Compiler, Processor register, Programming language, Set (abstract data type)