package jasmin
Compiler for High-Assurance and High-Speed Cryptography
Install
dune-project
Dependency
Authors
Maintainers
Sources
jasmin-compiler-v2025.06.1.tar.bz2
sha256=e92b42fa69da7c730b0c26dacf842a72b4febcaf4f2157a1dc18b3cce1f859fa
doc/jasmin.jasmin/Jasmin/Asm_gen/index.html
Module Jasmin.Asm_gen
module E : sig ... end
val fail : Expr.instr_info -> string -> Compiler_util.pp_error_loc
val of_var_e :
Type.stype ->
'a1 Arch_decl.coq_ToString ->
'a1 Arch_extra.coq_ToIdent ->
Expr.instr_info ->
Expr.var_i ->
(Compiler_util.pp_error_loc, 'a1) Utils0.result
val to_reg :
('a1, 'a2, 'a3, 'a4, 'a5) Arch_decl.arch_decl ->
('a1, 'a2, 'a3, 'a4, 'a5) Arch_extra.arch_toIdent ->
Var0.Var.var ->
('a1, 'a2, 'a3, 'a4, 'a5) Arch_decl.reg_t option
val to_regx :
('a1, 'a2, 'a3, 'a4, 'a5) Arch_decl.arch_decl ->
('a1, 'a2, 'a3, 'a4, 'a5) Arch_extra.arch_toIdent ->
Var0.Var.var ->
('a1, 'a2, 'a3, 'a4, 'a5) Arch_decl.regx_t option
val to_xreg :
('a1, 'a2, 'a3, 'a4, 'a5) Arch_decl.arch_decl ->
('a1, 'a2, 'a3, 'a4, 'a5) Arch_extra.arch_toIdent ->
Var0.Var.var ->
('a1, 'a2, 'a3, 'a4, 'a5) Arch_decl.xreg_t option
val to_rflag :
('a1, 'a2, 'a3, 'a4, 'a5) Arch_decl.arch_decl ->
('a1, 'a2, 'a3, 'a4, 'a5) Arch_extra.arch_toIdent ->
Var0.Var.var ->
('a1, 'a2, 'a3, 'a4, 'a5) Arch_decl.rflag_t option
val asm_typed_reg_of_var :
('a1, 'a2, 'a3, 'a4, 'a5) Arch_decl.arch_decl ->
('a1, 'a2, 'a3, 'a4, 'a5) Arch_extra.arch_toIdent ->
Var0.Var.var ->
('a1, 'a2, 'a3, 'a4, 'a5) Arch_decl.asm_typed_reg Compiler_util.cexec
val var_of_asm_typed_reg :
('a1, 'a2, 'a3, 'a4, 'a5) Arch_decl.arch_decl ->
('a1, 'a2, 'a3, 'a4, 'a5) Arch_extra.arch_toIdent ->
('a1, 'a2, 'a3, 'a4, 'a5) Arch_decl.asm_typed_reg ->
Var0.Var.var
type ('reg, 'regx, 'xreg, 'rflag, 'cond, 'asm_op, 'extra_op) asm_gen_params = {
agp_assemble_cond : Expr.instr_info -> Fexpr.fexpr -> ('reg, 'regx, 'xreg, 'rflag, 'cond) Arch_decl.cond_t Compiler_util.cexec;
agp_is_valid_address : ('reg, 'regx, 'xreg, 'rflag, 'cond) Arch_decl.reg_address -> bool;
}
val scale_of_z :
Expr.instr_info ->
BinNums.coq_Z ->
Datatypes.nat Compiler_util.cexec
val reg_of_ovar :
('a1, 'a2, 'a3, 'a4, 'a5, 'a6, 'a7) Arch_extra.asm_extra ->
Expr.instr_info ->
Expr.var_i option ->
('a1, 'a2, 'a3, 'a4, 'a5) Arch_decl.reg_t option Compiler_util.cexec
val assemble_lea :
('a1, 'a2, 'a3, 'a4, 'a5, 'a6, 'a7) Arch_extra.asm_extra ->
Expr.instr_info ->
Lea.lea ->
(Compiler_util.pp_error_loc, ('a1, 'a2, 'a3, 'a4, 'a5) Arch_decl.reg_address)
Utils0.result
val assemble_lea_checked :
('a1, 'a2, 'a3, 'a4, 'a5, 'a6, 'a7) Arch_extra.asm_extra ->
('a1, 'a2, 'a3, 'a4, 'a5, 'a6, 'a7) asm_gen_params ->
Expr.instr_info ->
Compiler_util.pp_error ->
Lea.lea ->
(Compiler_util.pp_error_loc, ('a1, 'a2, 'a3, 'a4, 'a5) Arch_decl.address)
Utils0.result
val addr_of_fexpr :
('a1, 'a2, 'a3, 'a4, 'a5, 'a6, 'a7) Arch_extra.asm_extra ->
('a1, 'a2, 'a3, 'a4, 'a5, 'a6, 'a7) asm_gen_params ->
Var0.Var.var ->
Expr.instr_info ->
Wsize.wsize ->
Fexpr.fexpr ->
(Compiler_util.pp_error_loc, ('a1, 'a2, 'a3, 'a4, 'a5) Arch_decl.address)
Utils0.result
val xreg_of_var :
('a1, 'a2, 'a3, 'a4, 'a5, 'a6, 'a7) Arch_extra.asm_extra ->
Expr.instr_info ->
Expr.var_i ->
('a1, 'a2, 'a3, 'a4, 'a5) Arch_decl.asm_arg Compiler_util.cexec
val assemble_word_load :
('a1, 'a2, 'a3, 'a4, 'a5, 'a6, 'a7) Arch_extra.asm_extra ->
('a1, 'a2, 'a3, 'a4, 'a5, 'a6, 'a7) asm_gen_params ->
Var0.Var.var ->
Expr.instr_info ->
Memory_model.aligned ->
Wsize.wsize ->
Fexpr.rexpr ->
(Compiler_util.pp_error_loc, ('a1, 'a2, 'a3, 'a4, 'a5) Arch_decl.asm_arg)
Utils0.result
val assemble_word :
('a1, 'a2, 'a3, 'a4, 'a5, 'a6, 'a7) Arch_extra.asm_extra ->
('a1, 'a2, 'a3, 'a4, 'a5, 'a6, 'a7) asm_gen_params ->
Arch_decl.addr_kind ->
Var0.Var.var ->
Expr.instr_info ->
Wsize.wsize ->
Fexpr.rexpr ->
(Compiler_util.pp_error_loc, ('a1, 'a2, 'a3, 'a4, 'a5) Arch_decl.asm_arg)
Utils0.result
val arg_of_rexpr :
('a1, 'a2, 'a3, 'a4, 'a5, 'a6, 'a7) Arch_extra.asm_extra ->
('a1, 'a2, 'a3, 'a4, 'a5, 'a6, 'a7) asm_gen_params ->
Arch_decl.addr_kind ->
Var0.Var.var ->
Expr.instr_info ->
Type.stype ->
Fexpr.rexpr ->
(Compiler_util.pp_error_loc, ('a1, 'a2, 'a3, 'a4, 'a5) Arch_decl.asm_arg)
Utils0.result
val rexpr_of_lexpr : Fexpr.lexpr -> Fexpr.rexpr
type 't nmap = Datatypes.nat -> 't option
val nget : 'a1 nmap -> Datatypes.nat -> 'a1 option
val nset :
'a1 nmap ->
Datatypes.nat ->
'a1 ->
Eqtype.Equality.sort ->
'a1 option
val nempty : Datatypes.nat -> 'a1 option
val is_implicit :
('a1, 'a2, 'a3, 'a4, 'a5, 'a6, 'a7) Arch_extra.asm_extra ->
('a1, 'a2, 'a3, 'a4, 'a5) Arch_decl.implicit_arg ->
Fexpr.rexpr ->
bool
val compile_arg :
('a1, 'a2, 'a3, 'a4, 'a5, 'a6, 'a7) Arch_extra.asm_extra ->
('a1, 'a2, 'a3, 'a4, 'a5, 'a6, 'a7) asm_gen_params ->
Var0.Var.var ->
Expr.instr_info ->
((('a1, 'a2, 'a3, 'a4, 'a5) Arch_decl.arg_desc * Type.stype) * Fexpr.rexpr) ->
('a1, 'a2, 'a3, 'a4, 'a5) Arch_decl.asm_arg nmap ->
('a1, 'a2, 'a3, 'a4, 'a5) Arch_decl.asm_arg nmap Compiler_util.cexec
val compile_args :
('a1, 'a2, 'a3, 'a4, 'a5, 'a6, 'a7) Arch_extra.asm_extra ->
('a1, 'a2, 'a3, 'a4, 'a5, 'a6, 'a7) asm_gen_params ->
Var0.Var.var ->
Expr.instr_info ->
(('a1, 'a2, 'a3, 'a4, 'a5) Arch_decl.arg_desc * Type.stype) list ->
Fexpr.rexpr list ->
('a1, 'a2, 'a3, 'a4, 'a5) Arch_decl.asm_arg nmap ->
(Compiler_util.pp_error_loc,
('a1, 'a2, 'a3, 'a4, 'a5) Arch_decl.asm_arg nmap)
Utils0.result
val compat_imm :
('a1, 'a2, 'a3, 'a4, 'a5, 'a6, 'a7) Arch_extra.asm_extra ->
Type.stype ->
Eqtype.Equality.sort ->
Eqtype.Equality.sort ->
bool
val check_sopn_arg :
('a1, 'a2, 'a3, 'a4, 'a5, 'a6, 'a7) Arch_extra.asm_extra ->
('a1, 'a2, 'a3, 'a4, 'a5, 'a6, 'a7) asm_gen_params ->
Var0.Var.var ->
Expr.instr_info ->
('a1, 'a2, 'a3, 'a4, 'a5) Arch_decl.asm_arg list ->
Fexpr.rexpr ->
(('a1, 'a2, 'a3, 'a4, 'a5) Arch_decl.arg_desc * Type.stype) ->
bool
val check_sopn_dest :
('a1, 'a2, 'a3, 'a4, 'a5, 'a6, 'a7) Arch_extra.asm_extra ->
('a1, 'a2, 'a3, 'a4, 'a5, 'a6, 'a7) asm_gen_params ->
Var0.Var.var ->
Expr.instr_info ->
('a1, 'a2, 'a3, 'a4, 'a5) Arch_decl.asm_arg list ->
Fexpr.rexpr ->
(('a1, 'a2, 'a3, 'a4, 'a5) Arch_decl.arg_desc * Type.stype) ->
bool
val assemble_asm_op_aux :
('a1, 'a2, 'a3, 'a4, 'a5, 'a6, 'a7) Arch_extra.asm_extra ->
('a1, 'a2, 'a3, 'a4, 'a5, 'a6, 'a7) asm_gen_params ->
Var0.Var.var ->
Expr.instr_info ->
('a1, 'a2, 'a3, 'a4, 'a5, 'a6) Arch_decl.asm_op_msb_t ->
Fexpr.lexpr list ->
Fexpr.rexpr list ->
(Compiler_util.pp_error_loc,
('a1, 'a2, 'a3, 'a4, 'a5) Arch_decl.asm_arg list)
Utils0.result
val check_sopn_args :
('a1, 'a2, 'a3, 'a4, 'a5, 'a6, 'a7) Arch_extra.asm_extra ->
('a1, 'a2, 'a3, 'a4, 'a5, 'a6, 'a7) asm_gen_params ->
Var0.Var.var ->
Expr.instr_info ->
('a1, 'a2, 'a3, 'a4, 'a5) Arch_decl.asm_arg list ->
Fexpr.rexpr list ->
(('a1, 'a2, 'a3, 'a4, 'a5) Arch_decl.arg_desc * Type.stype) list ->
bool
val check_sopn_dests :
('a1, 'a2, 'a3, 'a4, 'a5, 'a6, 'a7) Arch_extra.asm_extra ->
('a1, 'a2, 'a3, 'a4, 'a5, 'a6, 'a7) asm_gen_params ->
Var0.Var.var ->
Expr.instr_info ->
('a1, 'a2, 'a3, 'a4, 'a5) Arch_decl.asm_arg list ->
Fexpr.lexpr list ->
(('a1, 'a2, 'a3, 'a4, 'a5) Arch_decl.arg_desc * Type.stype) list ->
bool
val check_arg_kind_no_imm :
('a1, 'a2, 'a3, 'a4, 'a5, 'a6, 'a7) Arch_extra.asm_extra ->
('a1, 'a2, 'a3, 'a4, 'a5) Arch_decl.asm_arg ->
Arch_decl.arg_kind ->
bool
val filter_arg_kinds_no_imm :
('a1, 'a2, 'a3, 'a4, 'a5, 'a6, 'a7) Arch_extra.asm_extra ->
('a1, 'a2, 'a3, 'a4, 'a5) Arch_decl.asm_arg ->
Arch_decl.arg_kinds ->
(unit, Arch_decl.arg_kinds) Utils0.result
val filter_args_kinds_no_imm :
('a1, 'a2, 'a3, 'a4, 'a5, 'a6, 'a7) Arch_extra.asm_extra ->
('a1, 'a2, 'a3, 'a4, 'a5) Arch_decl.asm_args ->
Arch_decl.args_kinds ->
Arch_decl.args_kinds option
val filter_i_args_kinds_no_imm :
('a1, 'a2, 'a3, 'a4, 'a5, 'a6, 'a7) Arch_extra.asm_extra ->
Arch_decl.i_args_kinds ->
('a1, 'a2, 'a3, 'a4, 'a5) Arch_decl.asm_args ->
Arch_decl.i_args_kinds
val enforce_imm_arg_kind :
('a1, 'a2, 'a3, 'a4, 'a5, 'a6, 'a7) Arch_extra.asm_extra ->
('a1, 'a2, 'a3, 'a4, 'a5) Arch_decl.asm_arg ->
Arch_decl.arg_kind ->
('a1, 'a2, 'a3, 'a4, 'a5) Arch_decl.asm_arg option
val enforce_imm_arg_kinds :
('a1, 'a2, 'a3, 'a4, 'a5, 'a6, 'a7) Arch_extra.asm_extra ->
('a1, 'a2, 'a3, 'a4, 'a5) Arch_decl.asm_arg ->
Arch_decl.arg_kinds ->
('a1, 'a2, 'a3, 'a4, 'a5) Arch_decl.asm_arg option
val enforce_imm_args_kinds :
('a1, 'a2, 'a3, 'a4, 'a5, 'a6, 'a7) Arch_extra.asm_extra ->
('a1, 'a2, 'a3, 'a4, 'a5) Arch_decl.asm_args ->
Arch_decl.args_kinds ->
('a1, 'a2, 'a3, 'a4, 'a5) Arch_decl.asm_args option
val enforce_imm_i_args_kinds :
('a1, 'a2, 'a3, 'a4, 'a5, 'a6, 'a7) Arch_extra.asm_extra ->
Arch_decl.i_args_kinds ->
('a1, 'a2, 'a3, 'a4, 'a5) Arch_decl.asm_args ->
('a1, 'a2, 'a3, 'a4, 'a5) Arch_decl.asm_args option
val pp_caimm_checker_s :
Arch_decl.caimm_checker_s ->
Compiler_util.pp_error list
val pp_arg_kind : Arch_decl.arg_kind -> Compiler_util.pp_error
val pp_arg_kinds : Arch_decl.arg_kind list -> Compiler_util.pp_error
val pp_args_kinds : Arch_decl.arg_kind list list -> Compiler_util.pp_error
val pp_i_args_kinds :
Arch_decl.arg_kind list list list ->
Compiler_util.pp_error
val assemble_asm_op :
('a1, 'a2, 'a3, 'a4, 'a5, 'a6, 'a7) Arch_extra.asm_extra ->
('a1, 'a2, 'a3, 'a4, 'a5, 'a6, 'a7) asm_gen_params ->
Var0.Var.var ->
Expr.instr_info ->
('a1, 'a2, 'a3, 'a4, 'a5, 'a6) Arch_decl.asm_op_msb_t ->
Fexpr.lexpr list ->
Fexpr.rexpr list ->
(Compiler_util.pp_error_loc,
'a6 * ('a1, 'a2, 'a3, 'a4, 'a5) Arch_decl.asm_arg list)
Utils0.result
val assemble_asm_args :
('a1, 'a2, 'a3, 'a4, 'a5, 'a6, 'a7) Arch_extra.asm_extra ->
('a1, 'a2, 'a3, 'a4, 'a5, 'a6, 'a7) asm_gen_params ->
Var0.Var.var ->
Expr.instr_info ->
((('a1, 'a2, 'a3, 'a4, 'a5, 'a6) Arch_decl.asm_op_msb_t * Fexpr.lexpr list)
* Fexpr.rexpr list) ->
(Compiler_util.pp_error_loc,
'a6 * ('a1, 'a2, 'a3, 'a4, 'a5) Arch_decl.asm_arg list)
Utils0.result
val assemble_sopn :
('a1, 'a2, 'a3, 'a4, 'a5, 'a6, 'a7) Arch_extra.asm_extra ->
('a1, 'a2, 'a3, 'a4, 'a5, 'a6, 'a7) asm_gen_params ->
Var0.Var.var ->
Expr.instr_info ->
('a1, 'a2, 'a3, 'a4, 'a5, 'a6, 'a7) Arch_extra.extended_op Sopn.sopn ->
Fexpr.lexpr list ->
Fexpr.rexpr list ->
(Compiler_util.pp_error_loc,
('a6 * ('a1, 'a2, 'a3, 'a4, 'a5) Arch_decl.asm_arg list) list)
Utils0.result
val is_not_app1 : Fexpr.rexpr -> bool
val assemble_i :
('a1, 'a2, 'a3, 'a4, 'a5, 'a6, 'a7) Arch_extra.asm_extra ->
('a1, 'a2, 'a3, 'a4, 'a5, 'a6, 'a7) asm_gen_params ->
Var0.Var.var ->
('a1, 'a2, 'a3, 'a4, 'a5, 'a6, 'a7) Arch_extra.extended_op Linear.linstr ->
('a1, 'a2, 'a3, 'a4, 'a5, 'a6) Arch_decl.asm_i list Compiler_util.cexec
val assemble_c :
('a1, 'a2, 'a3, 'a4, 'a5, 'a6, 'a7) Arch_extra.asm_extra ->
('a1, 'a2, 'a3, 'a4, 'a5, 'a6, 'a7) asm_gen_params ->
Var0.Var.var ->
('a1, 'a2, 'a3, 'a4, 'a5, 'a6, 'a7) Arch_extra.extended_op Linear.lcmd ->
('a1, 'a2, 'a3, 'a4, 'a5, 'a6) Arch_decl.asm_i list Compiler_util.cexec
val is_typed_reg :
('a1, 'a2, 'a3, 'a4, 'a5, 'a6, 'a7) Arch_extra.asm_extra ->
Var0.Var.var ->
bool
val typed_reg_of_vari :
('a1, 'a2, 'a3, 'a4, 'a5, 'a6, 'a7) Arch_extra.asm_extra ->
Expr.var_i ->
('a1, 'a2, 'a3, 'a4, 'a5) Arch_decl.asm_typed_reg Compiler_util.cexec
val assemble_fd :
('a1, 'a2, 'a3, 'a4, 'a5, 'a6, 'a7) Arch_extra.asm_extra ->
('a1, 'a2, 'a3, 'a4, 'a5) Arch_decl.calling_convention ->
('a1, 'a2, 'a3, 'a4, 'a5, 'a6, 'a7) asm_gen_params ->
Var0.Var.var ->
Var0.Var.var ->
('a1, 'a2, 'a3, 'a4, 'a5, 'a6, 'a7) Arch_extra.extended_op Linear.lfundef ->
(Compiler_util.pp_error_loc,
('a1, 'a2, 'a3, 'a4, 'a5, 'a6) Arch_decl.asm_fundef)
Utils0.result
val assemble_prog :
('a1, 'a2, 'a3, 'a4, 'a5, 'a6, 'a7) Arch_extra.asm_extra ->
('a1, 'a2, 'a3, 'a4, 'a5) Arch_decl.calling_convention ->
('a1, 'a2, 'a3, 'a4, 'a5, 'a6, 'a7) asm_gen_params ->
('a1, 'a2, 'a3, 'a4, 'a5, 'a6, 'a7) Arch_extra.extended_op Linear.lprog ->
('a1, 'a2, 'a3, 'a4, 'a5, 'a6) Arch_decl.asm_prog Compiler_util.cexec
val vflags :
('a1, 'a2, 'a3, 'a4, 'a5) Arch_decl.arch_decl ->
('a1, 'a2, 'a3, 'a4, 'a5) Arch_extra.arch_toIdent ->
Var0.SvExtra.Sv.t
val all_vars :
('a1, 'a2, 'a3, 'a4, 'a5) Arch_decl.arch_decl ->
('a1, 'a2, 'a3, 'a4, 'a5) Arch_extra.arch_toIdent ->
Var0.SvExtra.Sv.t
val ovm_i :
('a1, 'a2, 'a3, 'a4, 'a5) Arch_decl.arch_decl ->
('a1, 'a2, 'a3, 'a4, 'a5) Arch_extra.arch_toIdent ->
('a1, 'a2, 'a3, 'a4, 'a5) Arch_decl.calling_convention ->
One_varmap.one_varmap_info
sectionYPositions = computeSectionYPositions($el), 10)"
x-init="setTimeout(() => sectionYPositions = computeSectionYPositions($el), 10)"
>