MLRISC

MLRISC Contributors Requirements How to Obtain MLRISC

Overview

Problem Statement Contributions MLRISC Based Compiler MLRISC Intermediate Representation MLRisc Generation Back End Optimizations Register Allocation Machine Description Garbage Collection Safety System Integration Optimizations Graphical Interface Line Counts Systems Using MLRISC Future Work

System

Architecture of MLRISC The MLTREE Language MLTree Extensions MLTree Utilities Instruction Selection Assemblers Machine Code Emitters Delay Slot Filling Span Dependency Resolution The Graph Library The Graph Visualization Library Basic Compiler Graphs The MLRISC IR SSA Optimizations ILP Optimizations Optimizations for VLIW/EPIC Architectur... Register Allocator

Back Ends

The Alpha Back End The PA RISC Back End The Sparc Back End The Intel x86 Back End The PowerPC Back End The MIPS Back End The TI C6x Back End

Basic Types

Annotations Cells Cluster Client Defined Constants Client Defined Pseudo Ops Instructions Instruction Streams Label Expressions Labels Regions Regmap

# Label Expressions

A label expression is a constant expression defined in terms of labels, or user defined constants. MLRISC uses the type `labexp` to represent label expressions. Label expressions are defined in the structure LabelExp.

The datatype `labexp` has the following definition:

       datatype labexp =
           LABEL of Label.label
         | CONST of Constant.const
         | INT of int
         | PLUS of labexp * labexp
         | MINUS of labexp * labexp
         | MULT of labexp * labexp
         | DIV of labexp * labexp
         | LSHIFT of labexp * word
         | RSHIFT of labexp * word
         | AND of labexp * word
         | OR of labexp * word

In addition, the following functions are defined in `labexp`:

- `valueOf : labexp -> int` -- Returns the value associated with a label expression
- `toString : labexp -> string` -- Return the pretty printed representation of an expression
- `hash : labexp -> word` -- Returns the hash value of an expression
- `== : labexp * labexp -> bool` -- Tests whether two label expression are lexically identical

The type `labexp` is depends on client defined constants typed. The functor `LabelExp` is parameterized as follows.

        functor LabelExp(Constant : CONSTANT)

Lal George
Allen Leung

Generated by mltex2html
Last modified: Mon Oct 3 20:52:35 UTC 2022 by buildd@x86-grnet-02