Legend:
Library
Module
Module type
Parameter
Class
Class type
BIL variable.
A variable is a symbolic name, that may have different values during program evaluation. A variable may be virtual, in the sense that it doesn't correspond to some physical location, or it can be physical if a variable is a some physical location, e.g., a register. All variables have types that designate a set of values over which a variable ranges.
BIL variables are regular values. Variables can have indices. Usually the index is used to represent the same variable but at different time or space (control flow path). This is particulary useful for representing variables in SSA form.
By default, comparison functions takes indices into account. In order to compare two variables regardless their index use same function, or compare with base x.
Printing
A default pretty printer doesn't print zero indices and never prints types.
val create : ?is_virtual:bool ->?fresh:bool ->string ->typ->t
create ?register ?fresh name typ creates a variable with a given name and type.
A newly created variable has version equal to 0.
If fresh is true (defaults to false), then a unique salt is mixed to the name of variable, making it unique.
If is_virtual is true (defaults to false), then a variable is virtual, i.e., it doesn't correspond to some physical register or memory location and was added to a program artificially.