Previous Up Next

Interface for module Tree

The module contains the declaration of intermediate representation trees, basically some abstract machine code.


type size
type label = Temp.label

type op = PLUS ∣ MINUS ∣ MUL ∣ DIV ∣ AND ∣ OR ∣ LSHIFT ∣ RSHIFT ∣ ARSHIFT ∣ XOR
type cond = EQ ∣ NE ∣ LT ∣ GT ∣ LE ∣ GE ∣ ULT ∣ ULE ∣UGT ∣ UGE

type exp =
     Const of int
   ∣ Name of Temp.label
   ∣ Temp of Temp.temp (∗ Content ∗)
   ∣ Binop of op × exp × exp
   ∣ Mem of exp
   ∣ Call of exp × (exp list)
   ∣ Eseq of stm × exp

and stm =
     Move of exp × exp (∗ store e2 into “e1”∗)
   ∣ Exp of exp
   ∣ Jump of exp × Temp.label list (∗ for dataflow analysis ∗)
   ∣ CJump of cond × exp × exp × Temp.label × Temp.label
   ∣ Seq of stm × stm
   ∣ Label of Temp.label

val notRelcond → cond
val commutecond → cond

 ,
Previous Up Next