Module Register


module Register: sig .. end
Pseudo- and real registers

type reg 
abstract type for registers and pseudo-registers
val sp : reg
MIPS register $sp
val temp0 : reg
reserved register to handle spilled pseudo-registers
val temp1 : reg
reserved register to handle spilled pseudo-registers
val nb_regs : unit -> int
number of available real registers
val set_nb_regs : int -> unit
set the number of real registers that can be allocated
val is_real : reg -> bool
is_real r return true iff r is a real register
val join : reg -> reg -> reg
join r s takes two pseudo-registers r and s and produces a pseudo-register joining them
val real : reg -> reg
real r return the real register contained in the join
Raises Not_found if it does not exist
val print_reg : Pervasives.out_channel -> reg -> unit
printing function for registers

Register sets

type reg_set 
type for sets of registers
val empty : reg_set
The empty set.
val add : reg -> reg_set -> reg_set
add 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_set
remove 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 -> bool
Test whether a set is empty or not.
val choose : reg_set -> reg
Return 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 -> 'a
fold 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 -> unit
iter f s applies f in turn to all elements of s. The order of the elements of s is unspecified.

Conversion functions

val from_int : int -> reg
val from_string : string -> reg
val to_string : reg -> string
val to_color : reg -> Graph.Graphviz.color