Std.Bili
BIL Interpreter.
bili
extends expi
with methods for evaluating BIL statements, thus allowing one to interpret BIL AST. To interpret BIL in the intermediate representation use biri.
Also, if you don't need to change the default behavior of the interpreter, then you may use Stmt.eval
that exposes an easier interface for BIL evaluation. For example,
let x = Var.create "x" bool_t;; val x : var = x let ctxt = Stmt.eval [Bil.(x := int Word.b0)] (new Bili.context);; val ctxt : Bili.context = <obj> ctxt#bindings |> Seq.to_list;; - : (var * Bil.result) list = [(x, [0x1] false)]
class context : object ... end
Bili.context
extends Expi.context
with PC (Program Counter).
module type S = sig ... end
include S with type ('a, 'e) state = ('a, 'e) Monads.Std.Monad.State.t
type ('a, 'e) state = ('a, 'e) Monads.Std.Monad.State.t
type 'a u = (unit, 'a) state
type 'a r = (Bil.result, 'a) state
class 'a t : object ... end
Base class for BIL interpreters