(* The type of the instructions of the abstract machine *)(* 1996.07.05 -- e *)open Config Const Prim;datatype ZamInstruction = Kquote of StructConstant | Kget_global of QualifiedIdent * int | Kset_global of QualifiedIdent * int | Kaccess of int | Kenvacc of int (* new *) | Kassign of int (* newer *) | Kgetfield of int (* new *) | Ksetfield of int (* new *) | Kpush | Kpop of int (* added arg *) | Krestart (* new *) | Kgrab of int (* added arg *) | Kapply of int (* added arg *) | Kappterm of int * int (* added args and renamed *) | Kpush_retaddr of int (* new *) | Kcheck_signals | Kreturn of int (* added arg *) | Kclosure of int * int (* added arg *) | Kclosurerec of int * int (* new *) | Kraise (* new *) | Kmakeblock of BlockTag * int | Kprim of primitive | Kpushtrap of int | Kpoptrap | Klabel of int | Kbranch of int | Kbranchif of int | Kbranchifnot of int | Kstrictbranchif of int | Kstrictbranchifnot of int | Ktest of bool_test * int | Kbranchinterval of int * int * int * int | Kswitch of int Array.array;type ZamPhrase ={ kph_funcs: ZamInstruction list, (* code for functions *) kph_inits: ZamInstruction list, (* initialization code *) kph_is_pure: bool (* pure = no side effects *)};val Nolabel = ~1;
(* The type of the instructions of the abstract machine *)
(* 1996.07.05 -- e *)
open Config Const Prim;
datatype ZamInstruction =
Kquote of StructConstant
| Kget_global of QualifiedIdent * int
| Kset_global of QualifiedIdent * int
| Kaccess of int
| Kenvacc of int (* new *)
| Kassign of int (* newer *)
| Kgetfield of int (* new *)
| Ksetfield of int (* new *)
| Kpush
| Kpop of int (* added arg *)
| Krestart (* new *)
| Kgrab of int (* added arg *)
| Kapply of int (* added arg *)
| Kappterm of int * int (* added args and renamed *)
| Kpush_retaddr of int (* new *)
| Kcheck_signals
| Kreturn of int (* added arg *)
| Kclosure of int * int (* added arg *)
| Kclosurerec of int * int (* new *)
| Kraise (* new *)
| Kmakeblock of BlockTag * int
| Kprim of primitive
| Kpushtrap of int
| Kpoptrap
| Klabel of int
| Kbranch of int
| Kbranchif of int
| Kbranchifnot of int
| Kstrictbranchif of int
| Kstrictbranchifnot of int
| Ktest of bool_test * int
| Kbranchinterval of int * int * int * int
| Kswitch of int Array.array
;
type ZamPhrase =
{
kph_funcs: ZamInstruction list, (* code for functions *)
kph_inits: ZamInstruction list, (* initialization code *)
kph_is_pure: bool (* pure = no side effects *)
};
val Nolabel = ~1;