Module Assembler.Assembler_extr

val fst : ('a1 * 'a2) -> 'a1
val snd : ('a1 * 'a2) -> 'a2
type comparison =
  1. | Eq
  2. | Lt
  3. | Gt
val add : int -> int -> int
val sub : int -> int -> int
val leb : int -> int -> bool
val ltb : int -> int -> bool
val divmod : int -> int -> int -> int -> int * int
val div : int -> int -> int
val modulo : int -> int -> int
val apply : ('a1 -> 'a2) -> ('a1, 'a3) Stdlib.Result.t -> ('a2, 'a3) Stdlib.Result.t
module Pos : sig ... end
module N : sig ... end
module Z : sig ... end
val map : ('a1 -> 'a2) -> 'a1 list -> 'a2 list
val zero : char
val one : char
val shift : bool -> char -> char
val ascii_of_pos : int -> char
val ascii_of_N : int -> char
val ascii_of_nat : int -> char
type bv =
  1. | Nil
  2. | Cons of int * bool * bv
val bv_to_list : int -> bv -> bool list
val concat : int -> int -> bv -> bv -> bv
val bit_parity : int -> bool
val int_to_bv_n : int -> int -> bv
val bv_to_unsigned : int -> bv -> int
val bv_to_int : int -> bv -> int
val reverse : int -> bv -> bv
val erase : int -> bv -> Types.machine_inst
type t1 = bv
type prog = t1 list
type prog_erased = Types.machine_inst list
val new_line : string
val tab : string
val digit_to_char : int -> char
val nat_to_string_aux : int -> int -> string -> string
val nat_to_string : int -> string
type 'a t2 = ('a * int) list
val empty : 'a1 t2
val add0 : 'a1 t2 -> 'a1 -> int -> 'a1 t2
val find_opt : ('a1 -> 'a1 -> bool) -> 'a1 t2 -> 'a1 -> int option
val dup : ('a1 -> 'a1 -> bool) -> 'a1 t2 -> (('a1 * int) * int) option
type imm = int
type 'l prog0 = 'l Types.asm_inst list
type t4 =
  1. | Li of Types.reg * bv
  2. | Ld of Types.reg * Types.reg * bv
  3. | St of Types.reg * Types.reg * bv
  4. | Add of Types.reg * Types.reg * Types.reg
  5. | Addi of Types.reg * Types.reg * bv
  6. | Sub of Types.reg * Types.reg * Types.reg
  7. | And of Types.reg * Types.reg * Types.reg
  8. | Not of Types.reg * Types.reg
  9. | Sl of Types.reg * Types.reg * bv
  10. | Sr of Types.reg * Types.reg * bv
  11. | Beq of Types.reg * Types.reg * bv
  12. | Blt of Types.reg * Types.reg * bv
  13. | Jalr of Types.reg * Types.reg * bv
  14. | Apc of Types.reg * bv
  15. | J of bv
type prog1 = t4 list
type prog_erased0 = Types.isa_inst list
val erase0 : t4 -> Types.isa_inst
val width : 'a1 Types.asm_inst -> int
val build_symtable : 'a1 prog0 -> int -> 'a1 t2
val symtable_of_prog : 'a1 prog0 -> 'a1 t2
val ast_to_isa : ('a1 -> 'a1 -> bool) -> 'a1 Types.asm_inst -> 'a1 t2 -> int -> (t4 option, string) Stdlib.Result.t
val ast_prog_to_isa_prog_helper : ('a1 -> 'a1 -> bool) -> 'a1 prog0 -> 'a1 t2 -> int -> (prog1, string) Stdlib.Result.t
val ast_prog_to_isa_prog : ('a1 -> 'a1 -> bool) -> ('a1 -> string) -> 'a1 prog0 -> (prog1, string) Stdlib.Result.t
val opcode_of_inst : t4 -> bv
val reg_to_bv : Types.reg -> bv
val isa_to_machine : t4 -> t1
val isa_prog_to_machine_prog : prog1 -> prog
val assemble_prog : ('a1 -> 'a1 -> bool) -> ('a1 -> string) -> 'a1 prog0 -> (prog, string) Stdlib.Result.t
val ast_prog_to_isa_prog_extr : ('a1 -> 'a1 -> bool) -> ('a1 -> string) -> 'a1 prog0 -> (prog_erased0, string) Stdlib.Result.t
val assemble_prog_extr : ('a1 -> 'a1 -> bool) -> ('a1 -> string) -> 'a1 prog0 -> (prog_erased, string) Stdlib.Result.t