Up

module Mach

: sig
#
type integer_comparison =
# | Isigned of Cmm.comparison
# | Iunsigned of Cmm.comparison
#
type integer_operation =
# | Iadd
# | Isub
# | Imul
# | Imulh
# | Idiv
# | Imod
# | Iand
# | Ior
# | Ixor
# | Ilsl
# | Ilsr
# | Iasr
# | Icomp of integer_comparison
# | Icheckbound
#
type test =
# | Itruetest
# | Ifalsetest
# | Iinttest of integer_comparison
# | Iinttest_imm of integer_comparison * int
# | Ifloattest of Cmm.comparison * bool
# | Ioddtest
# | Ieventest
#
type operation =
# | Imove
# | Ispill
# | Ireload
# | Iconst_int of nativeint
# | Iconst_float of float
# | Iconst_symbol of string
# | Iconst_blockheader of nativeint
# | Icall_ind
# | Icall_imm of string
# | Itailcall_ind
# | Itailcall_imm of string
# | Iextcall of string * bool
# | Istackoffset of int
# | Iload of Cmm.memory_chunk * Arch.addressing_mode
# | Istore of Cmm.memory_chunk * Arch.addressing_mode * bool
# | Ialloc of int
# | Iintop of integer_operation
# | Iintop_imm of integer_operation * int
# | Inegf
# | Iabsf
# | Iaddf
# | Isubf
# | Imulf
# | Idivf
# | Ifloatofint
# | Iintoffloat
# | Ispecific of Arch.specific_operation
#
type instruction = {
# desc
: instruction_desc;
# next
: instruction;
# arg
: Reg.t array;
# res
: Reg.t array;
# dbg
: Debuginfo.t;
# mutable live
: Reg.Set.t;
}
#
type instruction_desc =
# | Iend
# | Iop of operation
# | Ireturn
# | Iifthenelse of test * instruction * instruction
# | Iswitch of int array * instruction array
# | Iloop of instruction
# | Icatch of int * instruction * instruction
# | Iexit of int
# | Itrywith of instruction * instruction
# | Iraise of Lambda.raise_kind
#
type fundecl = {
# fun_name
: string;
# fun_args
: Reg.t array;
# fun_body
: instruction;
# fun_fast
: bool;
# fun_dbg
: Debuginfo.t;
}
#
val dummy_instr : instruction
#
val end_instr : unit -> instruction
#
val instr_cons : instruction_desc -> Reg.t array -> Reg.t array -> instruction -> instruction
#
val instr_cons_debug : instruction_desc -> Reg.t array -> Reg.t array -> Debuginfo.t -> instruction -> instruction
#
val instr_iter : (instruction -> unit) -> instruction -> unit
end