Bil.Types
val bin_size_cast : cast Core_kernel.Bin_prot.Size.sizer
val bin_write_cast : cast Core_kernel.Bin_prot.Write.writer
val bin_writer_cast : cast Core_kernel.Bin_prot.Type_class.writer
val bin_read_cast : cast Core_kernel.Bin_prot.Read.reader
val __bin_read_cast__ : (int -> cast) Core_kernel.Bin_prot.Read.reader
val bin_reader_cast : cast Core_kernel.Bin_prot.Type_class.reader
val bin_cast : cast Core_kernel.Bin_prot.Type_class.t
val sexp_of_cast : cast -> Ppx_sexp_conv_lib.Sexp.t
val cast_of_sexp : Ppx_sexp_conv_lib.Sexp.t -> cast
type binop =
| PLUS
Integer addition. (commutative, associative)
*)| MINUS
Subtract second integer from first.
*)| TIMES
Integer multiplication. (commutative, associative)
*)| DIVIDE
Unsigned integer division.
*)| SDIVIDE
Signed integer division.
*)| MOD
Unsigned modulus.
*)| SMOD
Signed modulus.
*)| LSHIFT
Left shift.
*)| RSHIFT
Right shift, zero padding.
*)| ARSHIFT
Right shift, sign extend.
*)| AND
Bitwise and. (commutative, associative)
*)| OR
Bitwise or. (commutative, associative)
*)| XOR
Bitwise xor. (commutative, associative)
*)| EQ
Equals. (commutative) (associative on booleans)
*)| NEQ
Not equals. (commutative) (associative on booleans)
*)| LT
Unsigned less than.
*)| LE
Unsigned less than or equal to.
*)| SLT
Signed less than.
*)| SLE
Signed less than or equal to.
*)Binary operations implemented in the BIL
val bin_size_binop : binop Core_kernel.Bin_prot.Size.sizer
val bin_write_binop : binop Core_kernel.Bin_prot.Write.writer
val bin_writer_binop : binop Core_kernel.Bin_prot.Type_class.writer
val bin_read_binop : binop Core_kernel.Bin_prot.Read.reader
val __bin_read_binop__ : (int -> binop) Core_kernel.Bin_prot.Read.reader
val bin_reader_binop : binop Core_kernel.Bin_prot.Type_class.reader
val bin_binop : binop Core_kernel.Bin_prot.Type_class.t
val sexp_of_binop : binop -> Ppx_sexp_conv_lib.Sexp.t
val binop_of_sexp : Ppx_sexp_conv_lib.Sexp.t -> binop
Unary operations implemented in the IR
val bin_size_unop : unop Core_kernel.Bin_prot.Size.sizer
val bin_write_unop : unop Core_kernel.Bin_prot.Write.writer
val bin_writer_unop : unop Core_kernel.Bin_prot.Type_class.writer
val bin_read_unop : unop Core_kernel.Bin_prot.Read.reader
val __bin_read_unop__ : (int -> unop) Core_kernel.Bin_prot.Read.reader
val bin_reader_unop : unop Core_kernel.Bin_prot.Type_class.reader
val bin_unop : unop Core_kernel.Bin_prot.Type_class.t
val sexp_of_unop : unop -> Ppx_sexp_conv_lib.Sexp.t
val unop_of_sexp : Ppx_sexp_conv_lib.Sexp.t -> unop
type exp =
| Load of exp * exp * endian * size
load from memory
*)| Store of exp * exp * exp * endian * size
store to memory
*)| BinOp of binop * exp * exp
binary operation
*)| UnOp of unop * exp
unary operation
*)| Var of var
variable
*)| Int of word
immediate value
*)| Cast of cast * int * exp
casting
*)| Let of var * exp * exp
let-binding
*)| Unknown of string * typ
unknown or undefined value
*)| Ite of exp * exp * exp
if-then-else expression
*)| Extract of int * int * exp
extract portion of word
*)| Concat of exp * exp
concatenate two words
*)BIL expression variants
val bin_size_exp : exp Core_kernel.Bin_prot.Size.sizer
val bin_write_exp : exp Core_kernel.Bin_prot.Write.writer
val bin_writer_exp : exp Core_kernel.Bin_prot.Type_class.writer
val bin_size_typ : typ Core_kernel.Bin_prot.Size.sizer
val bin_write_typ : typ Core_kernel.Bin_prot.Write.writer
val bin_writer_typ : typ Core_kernel.Bin_prot.Type_class.writer
val bin_read_exp : exp Core_kernel.Bin_prot.Read.reader
val __bin_read_exp__ : (int -> exp) Core_kernel.Bin_prot.Read.reader
val bin_reader_exp : exp Core_kernel.Bin_prot.Type_class.reader
val bin_read_typ : typ Core_kernel.Bin_prot.Read.reader
val __bin_read_typ__ : (int -> typ) Core_kernel.Bin_prot.Read.reader
val bin_reader_typ : typ Core_kernel.Bin_prot.Type_class.reader
val bin_exp : exp Core_kernel.Bin_prot.Type_class.t
val bin_typ : typ Core_kernel.Bin_prot.Type_class.t
val sexp_of_exp : exp -> Ppx_sexp_conv_lib.Sexp.t
val sexp_of_typ : typ -> Ppx_sexp_conv_lib.Sexp.t
val exp_of_sexp : Ppx_sexp_conv_lib.Sexp.t -> exp
val typ_of_sexp : Ppx_sexp_conv_lib.Sexp.t -> typ
type stmt =
| Move of var * exp
assign value of expression to variable
*)| Jmp of exp
jump to absolute address
*)| Special of string
Statement with semantics not expressible in BIL
*)| While of exp * stmt list
while loops
*)| If of exp * stmt list * stmt list
if/then/else statement
*)| CpuExn of int
CPU exception
*)val bin_size_stmt : stmt Core_kernel.Bin_prot.Size.sizer
val bin_write_stmt : stmt Core_kernel.Bin_prot.Write.writer
val bin_writer_stmt : stmt Core_kernel.Bin_prot.Type_class.writer
val bin_read_stmt : stmt Core_kernel.Bin_prot.Read.reader
val __bin_read_stmt__ : (int -> stmt) Core_kernel.Bin_prot.Read.reader
val bin_reader_stmt : stmt Core_kernel.Bin_prot.Type_class.reader
val bin_stmt : stmt Core_kernel.Bin_prot.Type_class.t
val sexp_of_stmt : stmt -> Ppx_sexp_conv_lib.Sexp.t
val stmt_of_sexp : Ppx_sexp_conv_lib.Sexp.t -> stmt