package libsail
Sail is a language for describing the instruction semantics of processors
Install
Dune Dependency
Authors
Maintainers
Sources
sail-0.18.tbz
sha256=fcdbda14f1ed59fa30e23da34abe02547416e3c2a83fbeee5606e100a5edcf35
sha512=0bbd72706cb4c1ddf13ea1c42004ec498aa9db8a301020f0dd3d8ac582d1bed8a48c7a825b8e3e6f629279f1f900384f6966608e1cd59e7b1217776413c7fa27
doc/libsail/Libsail/Interpreter/index.html
Module Libsail.Interpreter
Source
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 option
Source
val complete_bindings :
partial_binding Ast_util.Bindings.t ->
Value.value Ast_util.Bindings.t
Source
val pattern_match :
Type_check.Env.t ->
Type_check.tannot Ast.pat ->
Value.value ->
bool * partial_binding Ast_util.Bindings.t
Source
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 ->
gstate
Source
val initialize_registers :
bool ->
bool ->
gstate ->
(Type_check.tannot, 'a) Ast.def list ->
gstate
Source
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 * gstate
Source
val annot_exp_effect :
Type_check.tannot Ast.exp_aux ->
Ast.l ->
Type_check.Env.t ->
Ast.typ ->
Type_check.tannot Ast.exp
Source
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)"
>