50 lines · 1.5 KB · Standard ML
RawDownload
(* 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;