(*
   types.ml
   15-411
   by Arthur O'Dwyer
*)
(* @version $Id: types.ml,v 1.2 2004/10/26 05:10:08 ajo Exp $ *)

type temp = int

(* Types involved with register allocation *)

type register = int
type stackslot = int
type regalloc_t = REGISTER of register
                | STACKSLOT of stackslot
                | TEMP of temp


(* The type of an instruction *)
type instr =
  | OPER of (string * regalloc_t list * regalloc_t list)
  | LIVEOPER of (string * regalloc_t list * regalloc_t list)
  | MOVE of (string * regalloc_t * regalloc_t)
  | JUMP of string
  | LABEL of string
  | COMMENT of string