package binsec

  1. Overview
  2. Docs

doc/binsec.sse/Binsec_sse/Ir/index.html

Module Binsec_sse.IrSource

include module type of struct include Binsec_sse_loader.Ir end
type builtin = Binsec_sse_loader.Ir.builtin = ..
type builtin +=
  1. | Inline of Binsec_kernel.Dhunk.t
  2. | EndOfHook
val pp_builtin : Format.formatter -> builtin -> unit
val register_builtin_printer : (Format.formatter -> builtin -> bool) -> unit
type 'a opcode = 'a Binsec_sse_loader.Ir.opcode =
  1. | Nop : [ `Fallthrough ] opcode
  2. | Instruction : Binsec_kernel.Instruction.t -> [< `Label | `Fallthrough ] opcode
  3. | Hook : {
    1. addr : Binsec_kernel.Virtual_address.t;
    2. info : string;
    } -> [< `Label | `Fallthrough ] opcode
  4. | Assign : {
    1. var : Binsec_kernel.Dba.Var.t;
    2. rval : Binsec_kernel.Dba.Expr.t;
    } -> [ `Fallthrough ] opcode
  5. | Clobber : Binsec_kernel.Dba.Var.t -> [ `Fallthrough ] opcode
  6. | Forget : Binsec_kernel.Dba.Var.t -> [ `Fallthrough ] opcode
  7. | Load : {
    1. var : Binsec_kernel.Dba.Var.t;
    2. base : string option;
    3. dir : Binsec_kernel.Machine.endianness;
    4. addr : Binsec_kernel.Dba.Expr.t;
    } -> [ `Fallthrough ] opcode
  8. | Store : {
    1. base : string option;
    2. dir : Binsec_kernel.Machine.endianness;
    3. addr : Binsec_kernel.Dba.Expr.t;
    4. rval : Binsec_kernel.Dba.Expr.t;
    } -> [ `Fallthrough ] opcode
  9. | Symbolize : Binsec_kernel.Dba.Var.t -> [ `Fallthrough ] opcode
  10. | Assume : Binsec_kernel.Dba.Expr.t -> [ `Fallthrough ] opcode
  11. | Assert : Binsec_kernel.Dba.Expr.t -> [ `Fallthrough ] opcode
  12. | Builtin : builtin -> [< `Fallthrough | `Terminator ] opcode
  13. | Goto : {
    1. target : Binsec_kernel.Virtual_address.t;
    2. tag : Binsec_kernel.Dba.tag;
    } -> [< `Fallthrough | `Terminator ] opcode
  14. | Jump : {
    1. target : Binsec_kernel.Dba.Expr.t;
    2. tag : Binsec_kernel.Dba.tag;
    } -> [ `Terminator ] opcode
  15. | Halt : [ `Terminator ] opcode
  16. | Cut : [ `Terminator ] opcode
  17. | Die : string -> [ `Terminator ] opcode
and label = [ `Label ] opcode
and fallthrough = [ `Fallthrough ] opcode
and terminator = [ `Terminator ] opcode
val pp_opcode : Format.formatter -> 'a opcode -> unit
type node = Binsec_sse_loader.Ir.node =
  1. | Fallthrough of {
    1. label : label;
    2. kind : fallthrough;
    3. succ : int;
    }
  2. | Branch of {
    1. label : label;
    2. test : Binsec_kernel.Dba.Expr.t;
    3. target : int;
    4. fallthrough : int;
    }
  3. | Terminator of {
    1. label : label;
    2. kind : terminator;
    }
val pp_node : Format.formatter -> node -> unit
val label_of : node -> label
type stmt = Binsec_sse_loader.Ir.stmt =
  1. | Nop
  2. | Label of string
    (*

    label:

    *)
  3. | Opcode of fallthrough
  4. | If of Binsec_kernel.Dba.Expr.t * string
    (*

    if rval then goto label

    *)
  5. | Goto of string
    (*

    goto label

    *)
  6. | End of terminator
module type GRAPH = Binsec_sse_loader.Ir.GRAPH
module type INSTRUMENT = Binsec_sse_loader.Ir.INSTRUMENT