Results 1 -
4 of
4
A Typed Functional Language for Expressing Register Usage
, 1998
"... This paper lays a theoretical ground for exploring a type based approach to register allocation for purely functional languages. We present the compiler intermediate language R , a typed functional language with explicit register usage. The basic idea in our system is to use annotated types to propa ..."
Abstract
-
Cited by 2 (0 self)
- Add to MetaCart
This paper lays a theoretical ground for exploring a type based approach to register allocation for purely functional languages. We present the compiler intermediate language R , a typed functional language with explicit register usage. The basic idea in our system is to use annotated types to propagate information on where, i.e., in which register or stack-slot, a value is or is expected to be. For functions, their types state which registers might be overwritten upon application of the function. The language R , which is a call by value lambda calculus with flavours of assembly language, contains annotations that specify the register and stack behaviour of the machine-code that will be generated for a particular term. The type system uses annotated types and effects to capture estimates and descriptions of the register behaviour of terms. Polymorphism and sub-typing (sub-effecting) allows for very accurate register behaviour descriptions to be made by the types. We state a soundness ...
A Framework for End-to-End Verification and Evaluation of Register Allocators
"... Abstract. This paper presents a framework for designing, verifying, and evaluating register allocation algorithms. The proposed framework has three main components. The first component is MIRA, a language for describing programs prior to register allocation. The second component is FORD, a language ..."
Abstract
-
Cited by 2 (1 self)
- Add to MetaCart
Abstract. This paper presents a framework for designing, verifying, and evaluating register allocation algorithms. The proposed framework has three main components. The first component is MIRA, a language for describing programs prior to register allocation. The second component is FORD, a language that describes the results produced by the register allocator. The third component is a type checker for the output of a register allocator which helps to find bugs. To illustrate the effectiveness of the framework, we present RALF, a tool that allows a register allocator to be integrated into the gcc compiler for the StrongARM architecture. RALF simplifies the development of register allocators by sheltering the programmer from the internal complexity of gcc. MIRA and FORD’s features are sufficient to implement most of the register allocators currently in use and are independent of any particular register allocation algorithm or compiler. To demonstrate the generality of our framework, we have used RALF to evaluate eight different register allocators, including iterated register coalescing, linear scan, a chordal based allocator, and two integer linear programming approaches.
Inferring Annotated Types for Inter-procedural Register Allocation with Constructor Flattening
, 2002
"... We introduce an annotated type system for a compiler intermediate language. The type system is designed to support inter-procedural register allocation and the representation of tuples and variants directly in the register file. We present an algorithm that generates constraints for assigning annota ..."
Abstract
-
Cited by 1 (0 self)
- Add to MetaCart
We introduce an annotated type system for a compiler intermediate language. The type system is designed to support inter-procedural register allocation and the representation of tuples and variants directly in the register file. We present an algorithm that generates constraints for assigning annotations, and prove its soundness with respect to the type system.
General Terms
"... We introduce an annotated type system for a compiler intermediate language. The type system is designed to support inter-procedural register allocation and the representation of tuples and variants directly in the register file. We present an algorithm that generates constraints for assigning annota ..."
Abstract
- Add to MetaCart
We introduce an annotated type system for a compiler intermediate language. The type system is designed to support inter-procedural register allocation and the representation of tuples and variants directly in the register file. We present an algorithm that generates constraints for assigning annotations, and prove its soundness with respect to the type system. Categories and Subject Descriptors

