Home | History | Annotate | Download | only in rawdex
      1 /*
      2  * Copyright (C) 2014 The Android Open Source Project
      3  *
      4  * Licensed under the Apache License, Version 2.0 (the "License");
      5  * you may not use this file except in compliance with the License.
      6  * You may obtain a copy of the License at
      7  *
      8  *      http://www.apache.org/licenses/LICENSE-2.0
      9  *
     10  * Unless required by applicable law or agreed to in writing, software
     11  * distributed under the License is distributed on an "AS IS" BASIS,
     12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     13  * See the License for the specific language governing permissions and
     14  * limitations under the License.
     15  */
     16 
     17 package dexfuzz.rawdex;
     18 
     19 public enum Opcode {
     20   NOP,
     21   MOVE,
     22   MOVE_FROM16,
     23   MOVE_16,
     24   MOVE_WIDE,
     25   MOVE_WIDE_FROM16,
     26   MOVE_WIDE_16,
     27   MOVE_OBJECT,
     28   MOVE_OBJECT_FROM16,
     29   MOVE_OBJECT_16,
     30   MOVE_RESULT,
     31   MOVE_RESULT_WIDE,
     32   MOVE_RESULT_OBJECT,
     33   MOVE_EXCEPTION,
     34   RETURN_VOID,
     35   RETURN,
     36   RETURN_WIDE,
     37   RETURN_OBJECT,
     38   CONST_4,
     39   CONST_16,
     40   CONST,
     41   CONST_HIGH16,
     42   CONST_WIDE_16,
     43   CONST_WIDE_32,
     44   CONST_WIDE,
     45   CONST_WIDE_HIGH16,
     46   CONST_STRING,
     47   CONST_STRING_JUMBO,
     48   CONST_CLASS,
     49   MONITOR_ENTER,
     50   MONITOR_EXIT,
     51   CHECK_CAST,
     52   INSTANCE_OF,
     53   ARRAY_LENGTH,
     54   NEW_INSTANCE,
     55   NEW_ARRAY,
     56   FILLED_NEW_ARRAY,
     57   FILLED_NEW_ARRAY_RANGE,
     58   FILL_ARRAY_DATA,
     59   THROW,
     60   GOTO,
     61   GOTO_16,
     62   GOTO_32,
     63   PACKED_SWITCH,
     64   SPARSE_SWITCH,
     65   CMPL_FLOAT,
     66   CMPG_FLOAT,
     67   CMPL_DOUBLE,
     68   CMPG_DOUBLE,
     69   CMP_LONG,
     70   IF_EQ,
     71   IF_NE,
     72   IF_LT,
     73   IF_GE,
     74   IF_GT,
     75   IF_LE,
     76   IF_EQZ,
     77   IF_NEZ,
     78   IF_LTZ,
     79   IF_GEZ,
     80   IF_GTZ,
     81   IF_LEZ,
     82   UNUSED_3E,
     83   UNUSED_3F,
     84   UNUSED_40,
     85   UNUSED_41,
     86   UNUSED_42,
     87   UNUSED_43,
     88   AGET,
     89   AGET_WIDE,
     90   AGET_OBJECT,
     91   AGET_BOOLEAN,
     92   AGET_BYTE,
     93   AGET_CHAR,
     94   AGET_SHORT,
     95   APUT,
     96   APUT_WIDE,
     97   APUT_OBJECT,
     98   APUT_BOOLEAN,
     99   APUT_BYTE,
    100   APUT_CHAR,
    101   APUT_SHORT,
    102   IGET,
    103   IGET_WIDE,
    104   IGET_OBJECT,
    105   IGET_BOOLEAN,
    106   IGET_BYTE,
    107   IGET_CHAR,
    108   IGET_SHORT,
    109   IPUT,
    110   IPUT_WIDE,
    111   IPUT_OBJECT,
    112   IPUT_BOOLEAN,
    113   IPUT_BYTE,
    114   IPUT_CHAR,
    115   IPUT_SHORT,
    116   SGET,
    117   SGET_WIDE,
    118   SGET_OBJECT,
    119   SGET_BOOLEAN,
    120   SGET_BYTE,
    121   SGET_CHAR,
    122   SGET_SHORT,
    123   SPUT,
    124   SPUT_WIDE,
    125   SPUT_OBJECT,
    126   SPUT_BOOLEAN,
    127   SPUT_BYTE,
    128   SPUT_CHAR,
    129   SPUT_SHORT,
    130   INVOKE_VIRTUAL,
    131   INVOKE_SUPER,
    132   INVOKE_DIRECT,
    133   INVOKE_STATIC,
    134   INVOKE_INTERFACE,
    135   RETURN_VOID_NO_BARRIER,
    136   INVOKE_VIRTUAL_RANGE,
    137   INVOKE_SUPER_RANGE,
    138   INVOKE_DIRECT_RANGE,
    139   INVOKE_STATIC_RANGE,
    140   INVOKE_INTERFACE_RANGE,
    141   UNUSED_79,
    142   UNUSED_7A,
    143   NEG_INT,
    144   NOT_INT,
    145   NEG_LONG,
    146   NOT_LONG,
    147   NEG_FLOAT,
    148   NEG_DOUBLE,
    149   INT_TO_LONG,
    150   INT_TO_FLOAT,
    151   INT_TO_DOUBLE,
    152   LONG_TO_INT,
    153   LONG_TO_FLOAT,
    154   LONG_TO_DOUBLE,
    155   FLOAT_TO_INT,
    156   FLOAT_TO_LONG,
    157   FLOAT_TO_DOUBLE,
    158   DOUBLE_TO_INT,
    159   DOUBLE_TO_LONG,
    160   DOUBLE_TO_FLOAT,
    161   INT_TO_BYTE,
    162   INT_TO_CHAR,
    163   INT_TO_SHORT,
    164   ADD_INT,
    165   SUB_INT,
    166   MUL_INT,
    167   DIV_INT,
    168   REM_INT,
    169   AND_INT,
    170   OR_INT,
    171   XOR_INT,
    172   SHL_INT,
    173   SHR_INT,
    174   USHR_INT,
    175   ADD_LONG,
    176   SUB_LONG,
    177   MUL_LONG,
    178   DIV_LONG,
    179   REM_LONG,
    180   AND_LONG,
    181   OR_LONG,
    182   XOR_LONG,
    183   SHL_LONG,
    184   SHR_LONG,
    185   USHR_LONG,
    186   ADD_FLOAT,
    187   SUB_FLOAT,
    188   MUL_FLOAT,
    189   DIV_FLOAT,
    190   REM_FLOAT,
    191   ADD_DOUBLE,
    192   SUB_DOUBLE,
    193   MUL_DOUBLE,
    194   DIV_DOUBLE,
    195   REM_DOUBLE,
    196   ADD_INT_2ADDR,
    197   SUB_INT_2ADDR,
    198   MUL_INT_2ADDR,
    199   DIV_INT_2ADDR,
    200   REM_INT_2ADDR,
    201   AND_INT_2ADDR,
    202   OR_INT_2ADDR,
    203   XOR_INT_2ADDR,
    204   SHL_INT_2ADDR,
    205   SHR_INT_2ADDR,
    206   USHR_INT_2ADDR,
    207   ADD_LONG_2ADDR,
    208   SUB_LONG_2ADDR,
    209   MUL_LONG_2ADDR,
    210   DIV_LONG_2ADDR,
    211   REM_LONG_2ADDR,
    212   AND_LONG_2ADDR,
    213   OR_LONG_2ADDR,
    214   XOR_LONG_2ADDR,
    215   SHL_LONG_2ADDR,
    216   SHR_LONG_2ADDR,
    217   USHR_LONG_2ADDR,
    218   ADD_FLOAT_2ADDR,
    219   SUB_FLOAT_2ADDR,
    220   MUL_FLOAT_2ADDR,
    221   DIV_FLOAT_2ADDR,
    222   REM_FLOAT_2ADDR,
    223   ADD_DOUBLE_2ADDR,
    224   SUB_DOUBLE_2ADDR,
    225   MUL_DOUBLE_2ADDR,
    226   DIV_DOUBLE_2ADDR,
    227   REM_DOUBLE_2ADDR,
    228   ADD_INT_LIT16,
    229   RSUB_INT,
    230   MUL_INT_LIT16,
    231   DIV_INT_LIT16,
    232   REM_INT_LIT16,
    233   AND_INT_LIT16,
    234   OR_INT_LIT16,
    235   XOR_INT_LIT16,
    236   ADD_INT_LIT8,
    237   RSUB_INT_LIT8,
    238   MUL_INT_LIT8,
    239   DIV_INT_LIT8,
    240   REM_INT_LIT8,
    241   AND_INT_LIT8,
    242   OR_INT_LIT8,
    243   XOR_INT_LIT8,
    244   SHL_INT_LIT8,
    245   SHR_INT_LIT8,
    246   USHR_INT_LIT8,
    247   IGET_QUICK,
    248   IGET_WIDE_QUICK,
    249   IGET_OBJECT_QUICK,
    250   IPUT_QUICK,
    251   IPUT_WIDE_QUICK,
    252   IPUT_OBJECT_QUICK,
    253   INVOKE_VIRTUAL_QUICK,
    254   INVOKE_VIRTUAL_QUICK_RANGE,
    255   IPUT_BOOLEAN_QUICK,
    256   IPUT_BYTE_QUICK,
    257   IPUT_CHAR_QUICK,
    258   IPUT_SHORT_QUICK,
    259   UNUSED_EF,
    260   UNUSED_F0,
    261   UNUSED_F1,
    262   UNUSED_F2,
    263   UNUSED_F3,
    264   UNUSED_F4,
    265   UNUSED_F5,
    266   UNUSED_F6,
    267   UNUSED_F7,
    268   UNUSED_F8,
    269   UNUSED_F9,
    270   UNUSED_FA,
    271   UNUSED_FB,
    272   UNUSED_FC,
    273   UNUSED_FD,
    274   UNUSED_FE,
    275   UNUSED_FF;
    276 
    277   public static boolean isBetween(Opcode opcode, Opcode opcode1, Opcode opcode2) {
    278     return (opcode.ordinal() >= opcode1.ordinal() && opcode.ordinal() <= opcode2.ordinal());
    279   }
    280 }
    281