package libsail
sectionYPositions = computeSectionYPositions($el), 10)"
x-init="setTimeout(() => sectionYPositions = computeSectionYPositions($el), 10)"
>
Sail is a language for describing the instruction semantics of processors
Install
dune-project
Dependency
Authors
Maintainers
Sources
sail-0.18.tbz
sha256=fcdbda14f1ed59fa30e23da34abe02547416e3c2a83fbeee5606e100a5edcf35
sha512=0bbd72706cb4c1ddf13ea1c42004ec498aa9db8a301020f0dd3d8ac582d1bed8a48c7a825b8e3e6f629279f1f900384f6966608e1cd59e7b1217776413c7fa27
doc/libsail/Libsail/Interpreter/index.html
Module Libsail.InterpreterSource
Source
type gstate = {registers : Value.value Ast_util.Bindings.t;allow_registers : bool;primops : (Value.value list -> Value.value) Value.StringMap.t;letbinds : Type_check.tannot Ast.letbind list;fundefs : Type_check.tannot Ast.fundef Ast_util.Bindings.t;last_write_ea : (Value.value * Value.value * Value.value) option;typecheck_env : Type_check.Env.t;
}Source
type 'a response = | Early_return of Value.value| Exception of Value.value| Assertion_failed of string| Call of Ast.id * Value.value list * return_value -> 'a| Fail of string| Read_mem of Value.value * Value.value * Value.value * Value.value -> 'a| Write_ea of Value.value * Value.value * Value.value * unit -> 'a| Excl_res of bool -> 'a| Write_mem of Value.value * Value.value * Value.value * Value.value * bool -> 'a| Barrier of Value.value * unit -> 'a| Read_reg of string * Value.value -> 'a| Write_reg of string * Value.value * unit -> 'a| Get_primop of string * (Value.value list -> Value.value) -> 'a| Get_local of string * Value.value -> 'a| Put_local of string * Value.value * unit -> 'a| Get_global_letbinds of Type_check.tannot Ast.letbind list -> 'a
Source
type partial_binding = | Complete_binding of Value.value| Partial_binding of (Value.value * Libsail.Value.Big_int.num * Libsail.Value.Big_int.num) list
Source
val combine :
'a ->
partial_binding option ->
partial_binding option ->
partial_binding optionSource
val complete_bindings :
partial_binding Ast_util.Bindings.t ->
Value.value Ast_util.Bindings.tSource
val pattern_match :
Type_check.Env.t ->
Type_check.tannot Ast.pat ->
Value.value ->
bool * partial_binding Ast_util.Bindings.tSource
type frame = | Done of state * Value.value| Step of string Lazy.t * state * Type_check.tannot Ast.exp monad * (string Lazy.t * lstate * (return_value -> Type_check.tannot Ast.exp monad)) list| Break of frame| Effect_request of string Lazy.t * state * (string Lazy.t * lstate * (return_value -> Type_check.tannot Ast.exp monad)) list * effect_request| Fail of string Lazy.t * state * Type_check.tannot Ast.exp monad * (string Lazy.t * lstate * (return_value -> Type_check.tannot Ast.exp monad)) list * string
Source
and effect_request = | Read_mem of Value.value * Value.value * Value.value * Value.value -> state -> frame| Write_ea of Value.value * Value.value * Value.value * unit -> state -> frame| Excl_res of bool -> state -> frame| Write_mem of Value.value * Value.value * Value.value * Value.value * bool -> state -> frame| Barrier of Value.value * unit -> state -> frame| Read_reg of string * Value.value -> state -> frame| Write_reg of string * Value.value * unit -> state -> frame
Source
val initial_gstate :
(Value.value list -> Value.value) Value.StringMap.t ->
(Type_check.tannot, 'a) Ast.def list ->
Type_check.Env.t ->
gstateSource
val initialize_registers :
bool ->
bool ->
gstate ->
(Type_check.tannot, 'a) Ast.def list ->
gstateSource
val initial_state :
?registers:bool ->
?undef_registers:bool ->
(Type_check.tannot, 'a) Ast_defs.ast ->
Type_check.Env.t ->
(Value.value list -> Value.value) Value.StringMap.t ->
lstate * gstateSource
val annot_exp_effect :
Type_check.tannot Ast.exp_aux ->
Ast.l ->
Type_check.Env.t ->
Ast.typ ->
Type_check.tannot Ast.expSource
val annot_exp :
Type_check.tannot Ast.exp_aux ->
Ast.l ->
Type_check.Env.t ->
Ast.typ ->
Type_check.tannot Ast.exp sectionYPositions = computeSectionYPositions($el), 10)"
x-init="setTimeout(() => sectionYPositions = computeSectionYPositions($el), 10)"
>