sig
type reg = int
type value = Reg of ILVM.reg | Imm of int
type op2 = Add | Sub | Mul | Div | Mod | LT | Eq
type instr =
Goto of ILVM.value
| Exit of ILVM.value
| Abort
| Op2 of ILVM.reg * ILVM.op2 * ILVM.value * ILVM.value * ILVM.instr
| Copy of ILVM.reg * ILVM.value * ILVM.instr
| Load of ILVM.reg * ILVM.value * ILVM.instr
| Store of ILVM.reg * ILVM.value * ILVM.instr
| Ifz of ILVM.reg * ILVM.instr * ILVM.instr
| Malloc of ILVM.reg * ILVM.value * ILVM.instr
| Free of ILVM.reg * ILVM.instr
type block = int * ILVM.instr
val string_of_blocks : ILVM.block list -> string
end