package jasmin

  1. Overview
  2. Docs
Legend:
Page
Library
Module
Module type
Parameter
Class
Class type
Source

Module Jasmin.Asm_gen

module E : sig ... end
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 = {
  1. agp_assemble_cond : Expr.instr_info -> Fexpr.fexpr -> ('reg, 'regx, 'xreg, 'rflag, 'cond) Arch_decl.cond_t Compiler_util.cexec;
  2. agp_is_valid_address : ('reg, 'regx, 'xreg, 'rflag, 'cond) Arch_decl.reg_address -> bool;
}
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_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