Cse.ExprSourcetype 'a op = 'a Binsec_base.Term.operator = | Not : Binsec_base.Term.unary op| Sext : size -> Binsec_base.Term.unary op| Uext : size -> Binsec_base.Term.unary op| Restrict : int interval -> Binsec_base.Term.unary op| Plus : Binsec_base.Term.binary op| Minus : _ op| Mul : Binsec_base.Term.binary op| Udiv : Binsec_base.Term.binary op| Urem : Binsec_base.Term.binary op| Sdiv : Binsec_base.Term.binary op| Srem : Binsec_base.Term.binary op| Or : Binsec_base.Term.binary op| And : Binsec_base.Term.binary op| Xor : Binsec_base.Term.binary op| Concat : Binsec_base.Term.binary op| Lsl : Binsec_base.Term.binary op| Lsr : Binsec_base.Term.binary op| Asr : Binsec_base.Term.binary op| Rol : Binsec_base.Term.binary op| Ror : Binsec_base.Term.binary op| Eq : Binsec_base.Term.binary op| Diff : Binsec_base.Term.binary op| Ule : Binsec_base.Term.binary op| Ult : Binsec_base.Term.binary op| Uge : Binsec_base.Term.binary op| Ugt : Binsec_base.Term.binary op| Sle : Binsec_base.Term.binary op| Slt : Binsec_base.Term.binary op| Sge : Binsec_base.Term.binary op| Sgt : Binsec_base.Term.binary optype ('k, 'a, 'b) term = private ('k, 'a, 'b) Binsec_base.Term.t = | Var : {hash : int;size : size;name : string;label : 'a;} -> ([< `Var | `Loc | `Exp ], 'a, _) term| Load : {hash : int;len : size;dir : endianness;mutable addr : ([ `Exp ], 'a, 'b) term;label : 'b;} -> ([< `Mem | `Loc | `Exp ], 'a, 'b) term| Cst : Binsec_base.Bitvector.t -> ([< `Cst | `Exp ], _, _) term| Unary : {hash : int;size : size;f : Binsec_base.Term.unary Binsec_base.Term.operator;mutable x : ([ `Exp ], 'a, 'b) term;} -> ([< `Unary | `Exp ], 'a, 'b) term| Binary : {hash : int;size : size;f : Binsec_base.Term.binary Binsec_base.Term.operator;mutable x : ([ `Exp ], 'a, 'b) term;mutable y : ([ `Exp ], 'a, 'b) term;} -> ([< `Binary | `Exp ], 'a, 'b) term| Ite : {hash : int;size : size;mutable c : ([ `Exp ], 'a, 'b) term;mutable t : ([ `Exp ], 'a, 'b) term;mutable e : ([ `Exp ], 'a, 'b) term;} -> ([< `Ite | `Exp ], 'a, 'b) termconstant bv creates a constant expression from the bitvector bv.
unary f x creates a unary application of f on x.
binary f x y creates a binary application of f on x and y.
shift_(left|right) e q shifts expression e by quantity q, padding with zeroes
restrict lo hi e creates Dba.ExprUnary(Restrict(lo, hi), e) if hi >= lo && lo >=0.
ones n creates a constant expression of value 1 with length n. I.e.; it has (n - 1) zeros in binary.
Raw constructors
_unary f x creates a unary application of f on x.
_binary f x y creates a binary application of f on x and y.