1   // Copyright 2012- Bill Campbell, Swami Iyer and Bahar Akbal-Delibas
2   
3   package jminusminus;
4   
5   /**
6    * This class defines constants related to the JVM bytecode.
7    */
8   public class CLConstants {
9       /**
10       * Magic number (0xCAFEBABE) identifying the class file format.
11       */
12      public static final long MAGIC = 3405691582L;
13  
14      /**
15       * Major version for the class files that j-- compiles.
16       */
17      public static final int MAJOR_VERSION = 49;
18  
19      /**
20       * Minor version for the class files that j-- compiles.
21       */
22      public static final int MINOR_VERSION = 0;
23  
24      /**
25       * public access flag.
26       */
27      public static final int ACC_PUBLIC = 0x0001;
28  
29      /**
30       * private access flag.
31       */
32      public static final int ACC_PRIVATE = 0x0002;
33  
34      /**
35       * protected access flag.
36       */
37      public static final int ACC_PROTECTED = 0x0004;
38  
39      /**
40       * static access flag.
41       */
42      public static final int ACC_STATIC = 0x0008;
43  
44      /**
45       * final access flag.
46       */
47      public static final int ACC_FINAL = 0x0010;
48  
49      /**
50       * super access flag.
51       */
52      public static final int ACC_SUPER = 0x0020;
53  
54      /**
55       * synchronized access flag.
56       */
57      public static final int ACC_SYNCHRONIZED = 0x0020;
58  
59      /**
60       * volatile access flag.
61       */
62      public static final int ACC_VOLATILE = 0x0040;
63  
64      /**
65       * bridge access flag.
66       */
67      public static final int ACC_BRIDGE = 0x0040;
68  
69      /**
70       * transient access flag.
71       */
72      public static final int ACC_TRANSIENT = 0x0080;
73  
74      /**
75       * varargs access flag.
76       */
77      public static final int ACC_VARARGS = 0x0080;
78  
79      /**
80       * native access flag.
81       */
82      public static final int ACC_NATIVE = 0x0100;
83  
84      /**
85       * interface access flag.
86       */
87      public static final int ACC_INTERFACE = 0x0200;
88  
89      /**
90       * abstract access flag.
91       */
92      public static final int ACC_ABSTRACT = 0x0400;
93  
94      /**
95       * strict access flag.
96       */
97      public static final int ACC_STRICT = 0x0800;
98  
99      /**
100      * synthetic access flag.
101      */
102     public static final int ACC_SYNTHETIC = 0x1000;
103 
104     /**
105      * annotation access flag.
106      */
107     public static final int ACC_ANNOTATION = 0x2000;
108 
109     /**
110      * enum access flag.
111      */
112     public static final int ACC_ENUM = 0x4000;
113 
114     /**
115      * Identifies CONSTANT_Utf8_info constant pool structure.
116      */
117     public static final short CONSTANT_Utf8 = 1;
118 
119     /**
120      * Identifies CONSTANT_Integer_info constant pool structure.
121      */
122     public static final short CONSTANT_Integer = 3;
123 
124     /**
125      * Identifies CONSTANT_Float_info constant pool structure.
126      */
127     public static final short CONSTANT_Float = 4;
128 
129     /**
130      * Identifies CONSTANT_Long_info constant pool structure.
131      */
132     public static final short CONSTANT_Long = 5;
133 
134     /**
135      * Identifies CONSTANT_Double_info constant pool structure.
136      */
137     public static final short CONSTANT_Double = 6;
138 
139     /**
140      * Identifies CONSTANT_Class_info constant pool structure.
141      */
142     public static final short CONSTANT_Class = 7;
143 
144     /**
145      * Identifies CONSTANT_String_info constant pool structure.
146      */
147     public static final short CONSTANT_String = 8;
148 
149     /**
150      * Identifies CONSTANT_Fieldref_info constant pool structure.
151      */
152     public static final short CONSTANT_Fieldref = 9;
153 
154     /**
155      * Identifies CONSTANT_Methodref_info constant pool structure.
156      */
157     public static final short CONSTANT_Methodref = 10;
158 
159     /**
160      * Identifies CONSTANT_InterfaceMethodref_info constant pool structure.
161      */
162     public static final short CONSTANT_InterfaceMethodref = 11;
163 
164     /**
165      * Identifies CONSTANT_NameAndType_info constant pool structure.
166      */
167     public static final short CONSTANT_NameAndType = 12;
168 
169     /**
170      * Identifies ConstantValue attribute.
171      */
172     public static final String ATT_CONSTANT_VALUE = "ConstantValue";
173 
174     /**
175      * Identifies Code attribute.
176      */
177     public static final String ATT_CODE = "Code";
178 
179     /**
180      * Identifies Exceptions attribute.
181      */
182     public static final String ATT_EXCEPTIONS = "Exceptions";
183 
184     /**
185      * Identifies InnerClasses attribute.
186      */
187     public static final String ATT_INNER_CLASSES = "InnerClasses";
188 
189     /**
190      * Identifies EnclosingMethod attribute.
191      */
192     public static final String ATT_ENCLOSING_METHOD = "EnclosingMethod";
193 
194     /**
195      * Identifies Synthetic attribute.
196      */
197     public static final String ATT_SYNTHETIC = "Synthetic";
198 
199     /**
200      * Identifies Signature attribute.
201      */
202     public static final String ATT_SIGNATURE = "Signature";
203 
204     /**
205      * Identifies SourceFile attribute.
206      */
207     public static final String ATT_SOURCE_FILE = "SourceFile";
208 
209     /**
210      * Identifies SourceDebugExtension attribute.
211      */
212     public static final String ATT_SOURCE_DEBUG_EXTENSION = "SourceDebugExtension";
213 
214     /**
215      * Identifies LineNumberTable attribute.
216      */
217     public static final String ATT_LINE_NUMBER_TABLE = "LineNumberTable";
218 
219     /**
220      * Identifies LocalVariableTable attribute.
221      */
222     public static final String ATT_LOCAL_VARIABLE_TABLE = "LocalVariableTable";
223 
224     /**
225      * Identifies LocalVariableTypeTable attribute.
226      */
227     public static final String ATT_LOCAL_VARIABLE_TYPE_TABLE = "LocalVariableTypeTable";
228 
229     /**
230      * Identifies Deprecated attribute.
231      */
232     public static final String ATT_DEPRECATED = "Deprecated";
233 
234     /**
235      * Identifies RuntimeVisibleAnnotations attribute.
236      */
237     public static final String ATT_RUNTIME_VISIBLE_ANNOTATIONS = "RuntimeVisibleAnnotations";
238 
239     /**
240      * Identifies RuntimeInvisibleAnnotations attribute.
241      */
242     public static final String ATT_RUNTIME_INVISIBLE_ANNOTATIONS = "RuntimeInvisibleAnnotations";
243 
244     /**
245      * Identifies RuntimeVisibleParameterAnnotations attribute.
246      */
247     public static final String ATT_RUNTIME_VISIBLE_PARAMETER_ANNOTATIONS =
248             "RuntimeVisibleParameterAnnotations";
249 
250     /**
251      * Identifies RuntimeInvisibleParameterAnnotations attribute.
252      */
253     public static final String ATT_RUNTIME_INVISIBLE_PARAMETER_ANNOTATIONS =
254             "RuntimeInvisibleParameterAnnotations";
255 
256     /**
257      * Identifies AnnotationDefault attribute.
258      */
259     public static final String ATT_ANNOTATION_DEFAULT = "AnnotationDefault";
260 
261     /**
262      * Identifies boolean type of annotation element value.
263      */
264     public static final short ELT_B = 'B';
265 
266     /**
267      * Identifies char type of annotation element value.
268      */
269     public static final short ELT_C = 'C';
270 
271     /**
272      * Identifies double type of annotation element value.
273      */
274     public static final short ELT_D = 'D';
275 
276     /**
277      * Identifies float type of annotation element value.
278      */
279     public static final short ELT_F = 'F';
280 
281     /**
282      * Identifies int type of annotation element value.
283      */
284     public static final short ELT_I = 'I';
285 
286     /**
287      * Identifies long type of annotation element value.
288      */
289     public static final short ELT_J = 'J';
290 
291     /**
292      * Identifies short type of annotation element value.
293      */
294     public static final short ELT_S = 'S';
295 
296     /**
297      * Identifies boolean type of annotation element value.
298      */
299     public static final short ELT_Z = 'Z';
300 
301     /**
302      * Identifies String type of annotation element value.
303      */
304     public static final short ELT_s = 's';
305 
306     /**
307      * Identifies class type of annotation element value.
308      */
309     public static final short ELT_c = 'c';
310 
311     /**
312      * Identifies annotation type of annotation element value.
313      */
314     public static final short ELT_ANNOTATION = '@';
315 
316     /**
317      * Identifies array type of annotation element value.
318      */
319     public static final short ELT_ARRAY = '[';
320 
321     /**
322      * Identifies enum type of annotation element value.
323      */
324     public static final short ELT_e = 'e';
325 
326     // JVM instructions begin here
327 
328     /**
329      * NOP instruction.
330      */
331     public static final int NOP = 0;
332 
333     /**
334      * ACONST_NULL instruction.
335      */
336     public static final int ACONST_NULL = 1;
337 
338     /**
339      * ICONST_M1 instruction.
340      */
341     public static final int ICONST_M1 = 2;
342 
343     /**
344      * ICONST_0 instruction.
345      */
346     public static final int ICONST_0 = 3;
347 
348     /**
349      * ICONST_1 instruction.
350      */
351     public static final int ICONST_1 = 4;
352 
353     /**
354      * ICONST_2 instruction.
355      */
356     public static final int ICONST_2 = 5;
357 
358     /**
359      * ICONST_3 instruction.
360      */
361     public static final int ICONST_3 = 6;
362 
363     /**
364      * ICONST_4 instruction.
365      */
366     public static final int ICONST_4 = 7;
367 
368     /**
369      * ICONST_5 instruction.
370      */
371     public static final int ICONST_5 = 8;
372 
373     /**
374      * LCONST_0 instruction.
375      */
376     public static final int LCONST_0 = 9;
377 
378     /**
379      * LCONST_1 instruction.
380      */
381     public static final int LCONST_1 = 10;
382 
383     /**
384      * FCONST_0 instruction.
385      */
386     public static final int FCONST_0 = 11;
387 
388     /**
389      * FCONST_1 instruction.
390      */
391     public static final int FCONST_1 = 12;
392 
393     /**
394      * FCONST_2 instruction.
395      */
396     public static final int FCONST_2 = 13;
397 
398     /**
399      * DCONST_0 instruction.
400      */
401     public static final int DCONST_0 = 14;
402 
403     /**
404      * DCONST_1 instruction.
405      */
406     public static final int DCONST_1 = 15;
407 
408     /**
409      * BIPUSH instruction.
410      */
411     public static final int BIPUSH = 16;
412 
413     /**
414      * SIPUSH instruction.
415      */
416     public static final int SIPUSH = 17;
417 
418     /**
419      * LDC instruction.
420      */
421     public static final int LDC = 18;
422 
423     /**
424      * LDC_W instruction.
425      */
426     public static final int LDC_W = 19;
427 
428     /**
429      * LDC2_W instruction.
430      */
431     public static final int LDC2_W = 20;
432 
433     /**
434      * ILOAD instruction.
435      */
436     public static final int ILOAD = 21;
437 
438     /**
439      * LLOAD instruction.
440      */
441     public static final int LLOAD = 22;
442 
443     /**
444      * FLOAD instruction.
445      */
446     public static final int FLOAD = 23;
447 
448     /**
449      * DLOAD instruction.
450      */
451     public static final int DLOAD = 24;
452 
453     /**
454      * ALOAD instruction.
455      */
456     public static final int ALOAD = 25;
457 
458     /**
459      * ILOAD_0 instruction.
460      */
461     public static final int ILOAD_0 = 26;
462 
463     /**
464      * ILOAD_1 instruction.
465      */
466     public static final int ILOAD_1 = 27;
467 
468     /**
469      * ILOAD_2 instruction.
470      */
471     public static final int ILOAD_2 = 28;
472 
473     /**
474      * ILOAD_3 instruction.
475      */
476     public static final int ILOAD_3 = 29;
477 
478     /**
479      * LLOAD_0 instruction.
480      */
481     public static final int LLOAD_0 = 30;
482 
483     /**
484      * LLOAD_1 instruction.
485      */
486     public static final int LLOAD_1 = 31;
487 
488     /**
489      * LLOAD_2 instruction.
490      */
491     public static final int LLOAD_2 = 32;
492 
493     /**
494      * LLOAD_3 instruction.
495      */
496     public static final int LLOAD_3 = 33;
497 
498     /**
499      * FLOAD_0 instruction.
500      */
501     public static final int FLOAD_0 = 34;
502 
503     /**
504      * FLOAD_1 instruction.
505      */
506     public static final int FLOAD_1 = 35;
507 
508     /**
509      * FLOAD_2 instruction.
510      */
511     public static final int FLOAD_2 = 36;
512 
513     /**
514      * FLOAD_3 instruction.
515      */
516     public static final int FLOAD_3 = 37;
517 
518     /**
519      * DLOAD_0 instruction.
520      */
521     public static final int DLOAD_0 = 38;
522 
523     /**
524      * DLOAD_1 instruction.
525      */
526     public static final int DLOAD_1 = 39;
527 
528     /**
529      * DLOAD_2 instruction.
530      */
531     public static final int DLOAD_2 = 40;
532 
533     /**
534      * DLOAD_3 instruction.
535      */
536     public static final int DLOAD_3 = 41;
537 
538     /**
539      * ALOAD_0 instruction.
540      */
541     public static final int ALOAD_0 = 42;
542 
543     /**
544      * ALOAD_1 instruction.
545      */
546     public static final int ALOAD_1 = 43;
547 
548     /**
549      * ALOAD_2 instruction.
550      */
551     public static final int ALOAD_2 = 44;
552 
553     /**
554      * ALOAD_3 instruction.
555      */
556     public static final int ALOAD_3 = 45;
557 
558     /**
559      * IALOAD instruction.
560      */
561     public static final int IALOAD = 46;
562 
563     /**
564      * LALOAD instruction.
565      */
566     public static final int LALOAD = 47;
567 
568     /**
569      * FALOAD instruction.
570      */
571     public static final int FALOAD = 48;
572 
573     /**
574      * DALOAD instruction.
575      */
576     public static final int DALOAD = 49;
577 
578     /**
579      * AALOAD instruction.
580      */
581     public static final int AALOAD = 50;
582 
583     /**
584      * BALOAD instruction.
585      */
586     public static final int BALOAD = 51;
587 
588     /**
589      * CALOAD instruction.
590      */
591     public static final int CALOAD = 52;
592 
593     /**
594      * SALOAD instruction.
595      */
596     public static final int SALOAD = 53;
597 
598     /**
599      * ISTORE instruction.
600      */
601     public static final int ISTORE = 54;
602 
603     /**
604      * LSTORE instruction.
605      */
606     public static final int LSTORE = 55;
607 
608     /**
609      * FSTORE instruction.
610      */
611     public static final int FSTORE = 56;
612 
613     /**
614      * DSTORE instruction.
615      */
616     public static final int DSTORE = 57;
617 
618     /**
619      * ASTORE instruction.
620      */
621     public static final int ASTORE = 58;
622 
623     /**
624      * ISTORE_0 instruction.
625      */
626     public static final int ISTORE_0 = 59;
627 
628     /**
629      * ISTORE_1 instruction.
630      */
631     public static final int ISTORE_1 = 60;
632 
633     /**
634      * ISTORE_2 instruction.
635      */
636     public static final int ISTORE_2 = 61;
637 
638     /**
639      * ISTORE_3 instruction.
640      */
641     public static final int ISTORE_3 = 62;
642 
643     /**
644      * LSTORE_0 instruction.
645      */
646     public static final int LSTORE_0 = 63;
647 
648     /**
649      * LSTORE_1 instruction.
650      */
651     public static final int LSTORE_1 = 64;
652 
653     /**
654      * LSTORE_2 instruction.
655      */
656     public static final int LSTORE_2 = 65;
657 
658     /**
659      * LSTORE_3 instruction.
660      */
661     public static final int LSTORE_3 = 66;
662 
663     /**
664      * FSTORE_0 instruction.
665      */
666     public static final int FSTORE_0 = 67;
667 
668     /**
669      * FSTORE_1 instruction.
670      */
671     public static final int FSTORE_1 = 68;
672 
673     /**
674      * FSTORE_2 instruction.
675      */
676     public static final int FSTORE_2 = 69;
677 
678     /**
679      * FSTORE_3 instruction.
680      */
681     public static final int FSTORE_3 = 70;
682 
683     /**
684      * DSTORE_0 instruction.
685      */
686     public static final int DSTORE_0 = 71;
687 
688     /**
689      * DSTORE_1 instruction.
690      */
691     public static final int DSTORE_1 = 72;
692 
693     /**
694      * DSTORE_2 instruction.
695      */
696     public static final int DSTORE_2 = 73;
697 
698     /**
699      * DSTORE_3 instruction.
700      */
701     public static final int DSTORE_3 = 74;
702 
703     /**
704      * ASTORE_0 instruction.
705      */
706     public static final int ASTORE_0 = 75;
707 
708     /**
709      * ASTORE_1 instruction.
710      */
711     public static final int ASTORE_1 = 76;
712 
713     /**
714      * ASTORE_2 instruction.
715      */
716     public static final int ASTORE_2 = 77;
717 
718     /**
719      * ASTORE_3 instruction.
720      */
721     public static final int ASTORE_3 = 78;
722 
723     /**
724      * IASTORE instruction.
725      */
726     public static final int IASTORE = 79;
727 
728     /**
729      * LASTORE instruction.
730      */
731     public static final int LASTORE = 80;
732 
733     /**
734      * FASTORE instruction.
735      */
736     public static final int FASTORE = 81;
737 
738     /**
739      * DASTORE instruction.
740      */
741     public static final int DASTORE = 82;
742 
743     /**
744      * AASTORE instruction.
745      */
746     public static final int AASTORE = 83;
747 
748     /**
749      * BASTORE instruction.
750      */
751     public static final int BASTORE = 84;
752 
753     /**
754      * CASTORE instruction.
755      */
756     public static final int CASTORE = 85;
757 
758     /**
759      * SASTORE instruction.
760      */
761     public static final int SASTORE = 86;
762 
763     /**
764      * POP instruction.
765      */
766     public static final int POP = 87;
767 
768     /**
769      * POP2 instruction.
770      */
771     public static final int POP2 = 88;
772 
773     /**
774      * DUP instruction.
775      */
776     public static final int DUP = 89;
777 
778     /**
779      * DUP_X1 instruction.
780      */
781     public static final int DUP_X1 = 90;
782 
783     /**
784      * DUP_X2 instruction.
785      */
786     public static final int DUP_X2 = 91;
787 
788     /**
789      * DUP2 instruction.
790      */
791     public static final int DUP2 = 92;
792 
793     /**
794      * DUP2_X1 instruction.
795      */
796     public static final int DUP2_X1 = 93;
797 
798     /**
799      * DUP2_X2 instruction.
800      */
801     public static final int DUP2_X2 = 94;
802 
803     /**
804      * SWAP instruction.
805      */
806     public static final int SWAP = 95;
807 
808     /**
809      * IADD instruction.
810      */
811     public static final int IADD = 96;
812 
813     /**
814      * LADD instruction.
815      */
816     public static final int LADD = 97;
817 
818     /**
819      * FADD instruction.
820      */
821     public static final int FADD = 98;
822 
823     /**
824      * DADD instruction.
825      */
826     public static final int DADD = 99;
827 
828     /**
829      * ISUB instruction.
830      */
831     public static final int ISUB = 100;
832 
833     /**
834      * LSUB instruction.
835      */
836     public static final int LSUB = 101;
837 
838     /**
839      * FSUB instruction.
840      */
841     public static final int FSUB = 102;
842 
843     /**
844      * DSUB instruction.
845      */
846     public static final int DSUB = 103;
847 
848     /**
849      * IMUL instruction.
850      */
851     public static final int IMUL = 104;
852 
853     /**
854      * LMUL instruction.
855      */
856     public static final int LMUL = 105;
857 
858     /**
859      * FMUL instruction.
860      */
861     public static final int FMUL = 106;
862 
863     /**
864      * DMUL instruction.
865      */
866     public static final int DMUL = 107;
867 
868     /**
869      * IDIV instruction.
870      */
871     public static final int IDIV = 108;
872 
873     /**
874      * LDIV instruction.
875      */
876     public static final int LDIV = 109;
877 
878     /**
879      * FDIV instruction.
880      */
881     public static final int FDIV = 110;
882 
883     /**
884      * DDIV instruction.
885      */
886     public static final int DDIV = 111;
887 
888     /**
889      * IREM instruction.
890      */
891     public static final int IREM = 112;
892 
893     /**
894      * LREM instruction.
895      */
896     public static final int LREM = 113;
897 
898     /**
899      * FREM instruction.
900      */
901     public static final int FREM = 114;
902 
903     /**
904      * DREM instruction.
905      */
906     public static final int DREM = 115;
907 
908     /**
909      * INEG instruction.
910      */
911     public static final int INEG = 116;
912 
913     /**
914      * LNEG instruction.
915      */
916     public static final int LNEG = 117;
917 
918     /**
919      * FNEG instruction.
920      */
921     public static final int FNEG = 118;
922 
923     /**
924      * DNEG instruction.
925      */
926     public static final int DNEG = 119;
927 
928     /**
929      * ISHL instruction.
930      */
931     public static final int ISHL = 120;
932 
933     /**
934      * LSHL instruction.
935      */
936     public static final int LSHL = 121;
937 
938     /**
939      * ISHR instruction.
940      */
941     public static final int ISHR = 122;
942 
943     /**
944      * LSHR instruction.
945      */
946     public static final int LSHR = 123;
947 
948     /**
949      * IUSHR instruction.
950      */
951     public static final int IUSHR = 124;
952 
953     /**
954      * LUSHR instruction.
955      */
956     public static final int LUSHR = 125;
957 
958     /**
959      * IAND instruction.
960      */
961     public static final int IAND = 126;
962 
963     /**
964      * LAND instruction.
965      */
966     public static final int LAND = 127;
967 
968     /**
969      * IOR instruction.
970      */
971     public static final int IOR = 128;
972 
973     /**
974      * LOR instruction.
975      */
976     public static final int LOR = 129;
977 
978     /**
979      * IXOR instruction.
980      */
981     public static final int IXOR = 130;
982 
983     /**
984      * LXOR instruction.
985      */
986     public static final int LXOR = 131;
987 
988     /**
989      * IINC instruction.
990      */
991     public static final int IINC = 132;
992 
993     /**
994      * I2L instruction.
995      */
996     public static final int I2L = 133;
997 
998     /**
999      * I2F instruction.
1000     */
1001    public static final int I2F = 134;
1002
1003    /**
1004     * I2D instruction.
1005     */
1006    public static final int I2D = 135;
1007
1008    /**
1009     * L2I instruction.
1010     */
1011    public static final int L2I = 136;
1012
1013    /**
1014     * L2F instruction.
1015     */
1016    public static final int L2F = 137;
1017
1018    /**
1019     * L2D instruction.
1020     */
1021    public static final int L2D = 138;
1022
1023    /**
1024     * F2I instruction.
1025     */
1026    public static final int F2I = 139;
1027
1028    /**
1029     * F2L instruction.
1030     */
1031    public static final int F2L = 140;
1032
1033    /**
1034     * F2D instruction.
1035     */
1036    public static final int F2D = 141;
1037
1038    /**
1039     * D2I instruction.
1040     */
1041    public static final int D2I = 142;
1042
1043    /**
1044     * D2L instruction.
1045     */
1046    public static final int D2L = 143;
1047
1048    /**
1049     * D2F instruction.
1050     */
1051    public static final int D2F = 144;
1052
1053    /**
1054     * I2B instruction.
1055     */
1056    public static final int I2B = 145;
1057
1058    /**
1059     * I2C instruction.
1060     */
1061    public static final int I2C = 146;
1062
1063    /**
1064     * I2S instruction.
1065     */
1066    public static final int I2S = 147;
1067
1068    /**
1069     * LCMP instruction.
1070     */
1071    public static final int LCMP = 148;
1072
1073    /**
1074     * FCMPL instruction.
1075     */
1076    public static final int FCMPL = 149;
1077
1078    /**
1079     * FCMPG instruction.
1080     */
1081    public static final int FCMPG = 150;
1082
1083    /**
1084     * DCMPL instruction.
1085     */
1086    public static final int DCMPL = 151;
1087
1088    /**
1089     * DCMPG instruction.
1090     */
1091    public static final int DCMPG = 152;
1092
1093    /**
1094     * IFEQ instruction.
1095     */
1096    public static final int IFEQ = 153;
1097
1098    /**
1099     * IFNE instruction.
1100     */
1101    public static final int IFNE = 154;
1102
1103    /**
1104     * IFLT instruction.
1105     */
1106    public static final int IFLT = 155;
1107
1108    /**
1109     * IFGE instruction.
1110     */
1111    public static final int IFGE = 156;
1112
1113    /**
1114     * IFGT instruction.
1115     */
1116    public static final int IFGT = 157;
1117
1118    /**
1119     * IFLE instruction.
1120     */
1121    public static final int IFLE = 158;
1122
1123    /**
1124     * IF_ICMPEQ instruction.
1125     */
1126    public static final int IF_ICMPEQ = 159;
1127
1128    /**
1129     * IF_ICMPNE instruction.
1130     */
1131    public static final int IF_ICMPNE = 160;
1132
1133    /**
1134     * IF_ICMPLT instruction.
1135     */
1136    public static final int IF_ICMPLT = 161;
1137
1138    /**
1139     * IF_ICMPGE instruction.
1140     */
1141    public static final int IF_ICMPGE = 162;
1142
1143    /**
1144     * IF_ICMPGT instruction.
1145     */
1146    public static final int IF_ICMPGT = 163;
1147
1148    /**
1149     * IF_ICMPLE instruction.
1150     */
1151    public static final int IF_ICMPLE = 164;
1152
1153    /**
1154     * IF_ACMPEQ instruction.
1155     */
1156    public static final int IF_ACMPEQ = 165;
1157
1158    /**
1159     * IF_ACMPNE instruction.
1160     */
1161    public static final int IF_ACMPNE = 166;
1162
1163    /**
1164     * GOTO instruction.
1165     */
1166    public static final int GOTO = 167;
1167
1168    /**
1169     * JSR instruction.
1170     */
1171    public static final int JSR = 168;
1172
1173    /**
1174     * RET instruction.
1175     */
1176    public static final int RET = 169;
1177
1178    /**
1179     * TABLESWITCH instruction.
1180     */
1181    public static final int TABLESWITCH = 170;
1182
1183    /**
1184     * LOOKUPSWITCH instruction.
1185     */
1186    public static final int LOOKUPSWITCH = 171;
1187
1188    /**
1189     * IRETURN instruction.
1190     */
1191    public static final int IRETURN = 172;
1192
1193    /**
1194     * LRETURN instruction.
1195     */
1196    public static final int LRETURN = 173;
1197
1198    /**
1199     * FRETURN instruction.
1200     */
1201    public static final int FRETURN = 174;
1202
1203    /**
1204     * DRETURN instruction.
1205     */
1206    public static final int DRETURN = 175;
1207
1208    /**
1209     * ARETURN instruction.
1210     */
1211    public static final int ARETURN = 176;
1212
1213    /**
1214     * RETURN instruction.
1215     */
1216    public static final int RETURN = 177;
1217
1218    /**
1219     * GETSTATIC instruction.
1220     */
1221    public static final int GETSTATIC = 178;
1222
1223    /**
1224     * PUTSTATIC instruction.
1225     */
1226    public static final int PUTSTATIC = 179;
1227
1228    /**
1229     * GETFIELD instruction.
1230     */
1231    public static final int GETFIELD = 180;
1232
1233    /**
1234     * PUTFIELD instruction.
1235     */
1236    public static final int PUTFIELD = 181;
1237
1238    /**
1239     * INVOKEVIRTUAL instruction.
1240     */
1241    public static final int INVOKEVIRTUAL = 182;
1242
1243    /**
1244     * INVOKESPECIAL instruction.
1245     */
1246    public static final int INVOKESPECIAL = 183;
1247
1248    /**
1249     * INVOKESTATIC instruction.
1250     */
1251    public static final int INVOKESTATIC = 184;
1252
1253    /**
1254     * INVOKEINTERFACE instruction.
1255     */
1256    public static final int INVOKEINTERFACE = 185;
1257
1258    /**
1259     * INVOKEDYNAMIC instruction.
1260     */
1261    public static final int INVOKEDYNAMIC = 186;
1262
1263    /**
1264     * NEW instruction.
1265     */
1266    public static final int NEW = 187;
1267
1268    /**
1269     * NEWARRAY instruction.
1270     */
1271    public static final int NEWARRAY = 188;
1272
1273    /**
1274     * ANEWARRAY instruction.
1275     */
1276    public static final int ANEWARRAY = 189;
1277
1278    /**
1279     * ARRAYLENGTH instruction.
1280     */
1281    public static final int ARRAYLENGTH = 190;
1282
1283    /**
1284     * ATHROW instruction.
1285     */
1286    public static final int ATHROW = 191;
1287
1288    /**
1289     * CHECKCAST instruction.
1290     */
1291    public static final int CHECKCAST = 192;
1292
1293    /**
1294     * INSTANCEOF instruction.
1295     */
1296    public static final int INSTANCEOF = 193;
1297
1298    /**
1299     * MONITORENTER instruction.
1300     */
1301    public static final int MONITORENTER = 194;
1302
1303    /**
1304     * MONITOREXIT instruction.
1305     */
1306    public static final int MONITOREXIT = 195;
1307
1308    /**
1309     * WIDE instruction.
1310     */
1311    public static final int WIDE = 196;
1312
1313    /**
1314     * MULTIANEWARRAY instruction.
1315     */
1316    public static final int MULTIANEWARRAY = 197;
1317
1318    /**
1319     * IFNULL instruction.
1320     */
1321    public static final int IFNULL = 198;
1322
1323    /**
1324     * IFNONNULL instruction.
1325     */
1326    public static final int IFNONNULL = 199;
1327
1328    /**
1329     * GOTO_W instruction.
1330     */
1331    public static final int GOTO_W = 200;
1332
1333    /**
1334     * JSR_W instruction.
1335     */
1336    public static final int JSR_W = 201;
1337
1338    // JVM instructions end here
1339
1340    /**
1341     * We classify the JVM instructions into the following categories.
1342     */
1343    enum Category {
1344        OBJECT, FIELD, METHOD1, METHOD2, ARRAY1, ARRAY2, ARRAY3, ARITHMETIC1, ARITHMETIC2, BIT,
1345        COMPARISON, CONVERSION, FLOW_CONTROL1, FLOW_CONTROL2, FLOW_CONTROL3, FLOW_CONTROL4,
1346        LOAD_STORE1, LOAD_STORE2, LOAD_STORE3, LOAD_STORE4, STACK, MISC;
1347    }
1348
1349    // The constants below simply serve as markers. We are not interested in their values, which
1350    // however have been picked so as not to conflict with others.
1351
1352    /**
1353     * Denotes values that are irrelevant to certain instructions. For example, local variable
1354     * index for arithmetic instructions.
1355     */
1356    public static final int IRRELEVANT = -1;
1357
1358    /**
1359     * Denotes values that are not statically known. For example, stack units for field
1360     * instructions.
1361     */
1362    public static final int DYNAMIC = 300;
1363
1364    /**
1365     * Stack units for the instructions that empty the operand stack.
1366     */
1367    public static final int EMPTY_STACK = 301;
1368
1369    /**
1370     * Stack units for the instructions that set the operand stack to unit size.
1371     */
1372    public static final int UNIT_SIZE_STACK = 302;
1373}
1374