module Register:sig..end
Pseudo- and real registers
type reg
abstract type for registers and pseudo-registers
val sp : regMIPS register $sp
val temp0 : regreserved register to handle spilled pseudo-registers
val temp1 : regreserved register to handle spilled pseudo-registers
val nb_regs : unit -> intnumber of available real registers
val set_nb_regs : int -> unitset the number of real registers that can be allocated
val is_real : reg -> boolis_real r return true iff r is a real register
val join : reg -> reg -> regjoin r s takes two pseudo-registers r and s and produces a pseudo-register joining them
val real : reg -> regreal r return the real register contained in the join
Not_found if it does not existval print_reg : Stdlib.out_channel -> reg -> unitprinting function for registers
type reg_set
type for sets of registers
val empty : reg_setThe empty set.
val add : reg -> reg_set -> reg_setadd r s returns a set containing all elements of s, plus r. If r was already in s, s is returned unchanged.
val remove : reg -> reg_set -> reg_setremove r s returns a set containing all elements of s,
except r. If r was not in s, s is returned unchanged.
val is_empty : reg_set -> boolTest whether a set is empty or not.
val choose : reg_set -> regReturn one element of the given set, or raise Not_found if
the set is empty. Which element is chosen is unspecified,
but equal elements will be chosen for equal sets.
val fold : (reg -> 'a -> 'a) -> reg_set -> 'a -> 'afold f s a computes (f xN ... (f x2 (f x1 a))...),
where x1 ... xN are the elements of s. The order of the elements of s is unspecified.
val iter : (reg -> unit) -> reg_set -> unititer f s applies f in turn to all elements of s. The order of the elements of s is unspecified.
val real_regs : unit -> reg_setreal_regs () returns the set of real registers according to
the number of available real registers
val from_int : int -> reg
val from_string : string -> reg
val to_string : reg -> string
val to_dot : reg -> string
val to_color : reg -> Graph.Graphviz.color