1 /**************************************************************************/
2 /*                                                                        */
3 /*                                 OCaml                                  */
4 /*                                                                        */
5 /*             Xavier Leroy, projet Cristal, INRIA Rocquencourt           */
6 /*                                                                        */
7 /*   Copyright 1996 Institut National de Recherche en Informatique et     */
8 /*     en Automatique.                                                    */
9 /*                                                                        */
10 /*   All rights reserved.  This file is distributed under the terms of    */
11 /*   the GNU Lesser General Public License version 2.1, with the          */
12 /*   special exception on linking described in the file LICENSE.          */
13 /*                                                                        */
14 /**************************************************************************/
15 
16 /* The instruction set. */
17 
18 #ifndef CAML_INSTRUCT_H
19 #define CAML_INSTRUCT_H
20 
21 #ifdef CAML_INTERNALS
22 
23 enum instructions {
24   ACC0, ACC1, ACC2, ACC3, ACC4, ACC5, ACC6, ACC7,
25   ACC, PUSH,
26   PUSHACC0, PUSHACC1, PUSHACC2, PUSHACC3,
27   PUSHACC4, PUSHACC5, PUSHACC6, PUSHACC7,
28   PUSHACC, POP, ASSIGN,
29   ENVACC1, ENVACC2, ENVACC3, ENVACC4, ENVACC,
30   PUSHENVACC1, PUSHENVACC2, PUSHENVACC3, PUSHENVACC4, PUSHENVACC,
31   PUSH_RETADDR, APPLY, APPLY1, APPLY2, APPLY3,
32   APPTERM, APPTERM1, APPTERM2, APPTERM3,
33   RETURN, RESTART, GRAB,
34   CLOSURE, CLOSUREREC,
35   OFFSETCLOSUREM2, OFFSETCLOSURE0, OFFSETCLOSURE2, OFFSETCLOSURE,
36   PUSHOFFSETCLOSUREM2, PUSHOFFSETCLOSURE0,
37   PUSHOFFSETCLOSURE2, PUSHOFFSETCLOSURE,
38   GETGLOBAL, PUSHGETGLOBAL, GETGLOBALFIELD, PUSHGETGLOBALFIELD, SETGLOBAL,
39   ATOM0, ATOM, PUSHATOM0, PUSHATOM,
40   MAKEBLOCK, MAKEBLOCK1, MAKEBLOCK2, MAKEBLOCK3, MAKEFLOATBLOCK,
41   GETFIELD0, GETFIELD1, GETFIELD2, GETFIELD3, GETFIELD, GETFLOATFIELD,
42   SETFIELD0, SETFIELD1, SETFIELD2, SETFIELD3, SETFIELD, SETFLOATFIELD,
43   VECTLENGTH, GETVECTITEM, SETVECTITEM,
44   GETSTRINGCHAR, SETSTRINGCHAR,
45   BRANCH, BRANCHIF, BRANCHIFNOT, SWITCH, BOOLNOT,
46   PUSHTRAP, POPTRAP, RAISE,
47   CHECK_SIGNALS,
48   C_CALL1, C_CALL2, C_CALL3, C_CALL4, C_CALL5, C_CALLN,
49   CONST0, CONST1, CONST2, CONST3, CONSTINT,
50   PUSHCONST0, PUSHCONST1, PUSHCONST2, PUSHCONST3, PUSHCONSTINT,
51   NEGINT, ADDINT, SUBINT, MULINT, DIVINT, MODINT,
52   ANDINT, ORINT, XORINT, LSLINT, LSRINT, ASRINT,
53   EQ, NEQ, LTINT, LEINT, GTINT, GEINT,
54   OFFSETINT, OFFSETREF, ISINT,
55   GETMETHOD,
56   BEQ, BNEQ,  BLTINT, BLEINT, BGTINT, BGEINT,
57   ULTINT, UGEINT,
58   BULTINT, BUGEINT,
59   GETPUBMET, GETDYNMET,
60   STOP,
61   EVENT, BREAK,
62   RERAISE, RAISE_NOTRACE,
63 FIRST_UNIMPLEMENTED_OP};
64 
65 #endif /* CAML_INTERNALS */
66 
67 #endif /* CAML_INSTRUCT_H */
68