Home | History | Annotate | Download | only in libdex
      1 /*
      2  * Copyright (C) 2008 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 /*
     18  * Table of Dalvik opcode names.
     19  *
     20  * IMPORTANT NOTE: The contents of this file are mostly generated
     21  * automatically by the opcode-gen tool. Any edits to the generated
     22  * sections will get wiped out the next time the tool is run.
     23  */
     24 
     25 #include "DexOpcodes.h"
     26 #include <assert.h>
     27 
     28 /*
     29  * Dalvik opcode names.
     30  */
     31 static const char* gOpNames[kNumPackedOpcodes] = {
     32     // BEGIN(libdex-opcode-names); GENERATED AUTOMATICALLY BY opcode-gen
     33     "nop",
     34     "move",
     35     "move/from16",
     36     "move/16",
     37     "move-wide",
     38     "move-wide/from16",
     39     "move-wide/16",
     40     "move-object",
     41     "move-object/from16",
     42     "move-object/16",
     43     "move-result",
     44     "move-result-wide",
     45     "move-result-object",
     46     "move-exception",
     47     "return-void",
     48     "return",
     49     "return-wide",
     50     "return-object",
     51     "const/4",
     52     "const/16",
     53     "const",
     54     "const/high16",
     55     "const-wide/16",
     56     "const-wide/32",
     57     "const-wide",
     58     "const-wide/high16",
     59     "const-string",
     60     "const-string/jumbo",
     61     "const-class",
     62     "monitor-enter",
     63     "monitor-exit",
     64     "check-cast",
     65     "instance-of",
     66     "array-length",
     67     "new-instance",
     68     "new-array",
     69     "filled-new-array",
     70     "filled-new-array/range",
     71     "fill-array-data",
     72     "throw",
     73     "goto",
     74     "goto/16",
     75     "goto/32",
     76     "packed-switch",
     77     "sparse-switch",
     78     "cmpl-float",
     79     "cmpg-float",
     80     "cmpl-double",
     81     "cmpg-double",
     82     "cmp-long",
     83     "if-eq",
     84     "if-ne",
     85     "if-lt",
     86     "if-ge",
     87     "if-gt",
     88     "if-le",
     89     "if-eqz",
     90     "if-nez",
     91     "if-ltz",
     92     "if-gez",
     93     "if-gtz",
     94     "if-lez",
     95     "unused-3e",
     96     "unused-3f",
     97     "unused-40",
     98     "unused-41",
     99     "unused-42",
    100     "unused-43",
    101     "aget",
    102     "aget-wide",
    103     "aget-object",
    104     "aget-boolean",
    105     "aget-byte",
    106     "aget-char",
    107     "aget-short",
    108     "aput",
    109     "aput-wide",
    110     "aput-object",
    111     "aput-boolean",
    112     "aput-byte",
    113     "aput-char",
    114     "aput-short",
    115     "iget",
    116     "iget-wide",
    117     "iget-object",
    118     "iget-boolean",
    119     "iget-byte",
    120     "iget-char",
    121     "iget-short",
    122     "iput",
    123     "iput-wide",
    124     "iput-object",
    125     "iput-boolean",
    126     "iput-byte",
    127     "iput-char",
    128     "iput-short",
    129     "sget",
    130     "sget-wide",
    131     "sget-object",
    132     "sget-boolean",
    133     "sget-byte",
    134     "sget-char",
    135     "sget-short",
    136     "sput",
    137     "sput-wide",
    138     "sput-object",
    139     "sput-boolean",
    140     "sput-byte",
    141     "sput-char",
    142     "sput-short",
    143     "invoke-virtual",
    144     "invoke-super",
    145     "invoke-direct",
    146     "invoke-static",
    147     "invoke-interface",
    148     "unused-73",
    149     "invoke-virtual/range",
    150     "invoke-super/range",
    151     "invoke-direct/range",
    152     "invoke-static/range",
    153     "invoke-interface/range",
    154     "unused-79",
    155     "unused-7a",
    156     "neg-int",
    157     "not-int",
    158     "neg-long",
    159     "not-long",
    160     "neg-float",
    161     "neg-double",
    162     "int-to-long",
    163     "int-to-float",
    164     "int-to-double",
    165     "long-to-int",
    166     "long-to-float",
    167     "long-to-double",
    168     "float-to-int",
    169     "float-to-long",
    170     "float-to-double",
    171     "double-to-int",
    172     "double-to-long",
    173     "double-to-float",
    174     "int-to-byte",
    175     "int-to-char",
    176     "int-to-short",
    177     "add-int",
    178     "sub-int",
    179     "mul-int",
    180     "div-int",
    181     "rem-int",
    182     "and-int",
    183     "or-int",
    184     "xor-int",
    185     "shl-int",
    186     "shr-int",
    187     "ushr-int",
    188     "add-long",
    189     "sub-long",
    190     "mul-long",
    191     "div-long",
    192     "rem-long",
    193     "and-long",
    194     "or-long",
    195     "xor-long",
    196     "shl-long",
    197     "shr-long",
    198     "ushr-long",
    199     "add-float",
    200     "sub-float",
    201     "mul-float",
    202     "div-float",
    203     "rem-float",
    204     "add-double",
    205     "sub-double",
    206     "mul-double",
    207     "div-double",
    208     "rem-double",
    209     "add-int/2addr",
    210     "sub-int/2addr",
    211     "mul-int/2addr",
    212     "div-int/2addr",
    213     "rem-int/2addr",
    214     "and-int/2addr",
    215     "or-int/2addr",
    216     "xor-int/2addr",
    217     "shl-int/2addr",
    218     "shr-int/2addr",
    219     "ushr-int/2addr",
    220     "add-long/2addr",
    221     "sub-long/2addr",
    222     "mul-long/2addr",
    223     "div-long/2addr",
    224     "rem-long/2addr",
    225     "and-long/2addr",
    226     "or-long/2addr",
    227     "xor-long/2addr",
    228     "shl-long/2addr",
    229     "shr-long/2addr",
    230     "ushr-long/2addr",
    231     "add-float/2addr",
    232     "sub-float/2addr",
    233     "mul-float/2addr",
    234     "div-float/2addr",
    235     "rem-float/2addr",
    236     "add-double/2addr",
    237     "sub-double/2addr",
    238     "mul-double/2addr",
    239     "div-double/2addr",
    240     "rem-double/2addr",
    241     "add-int/lit16",
    242     "rsub-int",
    243     "mul-int/lit16",
    244     "div-int/lit16",
    245     "rem-int/lit16",
    246     "and-int/lit16",
    247     "or-int/lit16",
    248     "xor-int/lit16",
    249     "add-int/lit8",
    250     "rsub-int/lit8",
    251     "mul-int/lit8",
    252     "div-int/lit8",
    253     "rem-int/lit8",
    254     "and-int/lit8",
    255     "or-int/lit8",
    256     "xor-int/lit8",
    257     "shl-int/lit8",
    258     "shr-int/lit8",
    259     "ushr-int/lit8",
    260     "+iget-volatile",
    261     "+iput-volatile",
    262     "+sget-volatile",
    263     "+sput-volatile",
    264     "+iget-object-volatile",
    265     "+iget-wide-volatile",
    266     "+iput-wide-volatile",
    267     "+sget-wide-volatile",
    268     "+sput-wide-volatile",
    269     "^breakpoint",
    270     "^throw-verification-error",
    271     "+execute-inline",
    272     "+execute-inline/range",
    273     "+invoke-object-init/range",
    274     "+return-void-barrier",
    275     "+iget-quick",
    276     "+iget-wide-quick",
    277     "+iget-object-quick",
    278     "+iput-quick",
    279     "+iput-wide-quick",
    280     "+iput-object-quick",
    281     "+invoke-virtual-quick",
    282     "+invoke-virtual-quick/range",
    283     "+invoke-super-quick",
    284     "+invoke-super-quick/range",
    285     "+iput-object-volatile",
    286     "+sget-object-volatile",
    287     "+sput-object-volatile",
    288     "dispatch-ff",
    289     "const-class/jumbo",
    290     "check-cast/jumbo",
    291     "instance-of/jumbo",
    292     "new-instance/jumbo",
    293     "new-array/jumbo",
    294     "filled-new-array/jumbo",
    295     "iget/jumbo",
    296     "iget-wide/jumbo",
    297     "iget-object/jumbo",
    298     "iget-boolean/jumbo",
    299     "iget-byte/jumbo",
    300     "iget-char/jumbo",
    301     "iget-short/jumbo",
    302     "iput/jumbo",
    303     "iput-wide/jumbo",
    304     "iput-object/jumbo",
    305     "iput-boolean/jumbo",
    306     "iput-byte/jumbo",
    307     "iput-char/jumbo",
    308     "iput-short/jumbo",
    309     "sget/jumbo",
    310     "sget-wide/jumbo",
    311     "sget-object/jumbo",
    312     "sget-boolean/jumbo",
    313     "sget-byte/jumbo",
    314     "sget-char/jumbo",
    315     "sget-short/jumbo",
    316     "sput/jumbo",
    317     "sput-wide/jumbo",
    318     "sput-object/jumbo",
    319     "sput-boolean/jumbo",
    320     "sput-byte/jumbo",
    321     "sput-char/jumbo",
    322     "sput-short/jumbo",
    323     "invoke-virtual/jumbo",
    324     "invoke-super/jumbo",
    325     "invoke-direct/jumbo",
    326     "invoke-static/jumbo",
    327     "invoke-interface/jumbo",
    328     "unused-27ff",
    329     "unused-28ff",
    330     "unused-29ff",
    331     "unused-2aff",
    332     "unused-2bff",
    333     "unused-2cff",
    334     "unused-2dff",
    335     "unused-2eff",
    336     "unused-2fff",
    337     "unused-30ff",
    338     "unused-31ff",
    339     "unused-32ff",
    340     "unused-33ff",
    341     "unused-34ff",
    342     "unused-35ff",
    343     "unused-36ff",
    344     "unused-37ff",
    345     "unused-38ff",
    346     "unused-39ff",
    347     "unused-3aff",
    348     "unused-3bff",
    349     "unused-3cff",
    350     "unused-3dff",
    351     "unused-3eff",
    352     "unused-3fff",
    353     "unused-40ff",
    354     "unused-41ff",
    355     "unused-42ff",
    356     "unused-43ff",
    357     "unused-44ff",
    358     "unused-45ff",
    359     "unused-46ff",
    360     "unused-47ff",
    361     "unused-48ff",
    362     "unused-49ff",
    363     "unused-4aff",
    364     "unused-4bff",
    365     "unused-4cff",
    366     "unused-4dff",
    367     "unused-4eff",
    368     "unused-4fff",
    369     "unused-50ff",
    370     "unused-51ff",
    371     "unused-52ff",
    372     "unused-53ff",
    373     "unused-54ff",
    374     "unused-55ff",
    375     "unused-56ff",
    376     "unused-57ff",
    377     "unused-58ff",
    378     "unused-59ff",
    379     "unused-5aff",
    380     "unused-5bff",
    381     "unused-5cff",
    382     "unused-5dff",
    383     "unused-5eff",
    384     "unused-5fff",
    385     "unused-60ff",
    386     "unused-61ff",
    387     "unused-62ff",
    388     "unused-63ff",
    389     "unused-64ff",
    390     "unused-65ff",
    391     "unused-66ff",
    392     "unused-67ff",
    393     "unused-68ff",
    394     "unused-69ff",
    395     "unused-6aff",
    396     "unused-6bff",
    397     "unused-6cff",
    398     "unused-6dff",
    399     "unused-6eff",
    400     "unused-6fff",
    401     "unused-70ff",
    402     "unused-71ff",
    403     "unused-72ff",
    404     "unused-73ff",
    405     "unused-74ff",
    406     "unused-75ff",
    407     "unused-76ff",
    408     "unused-77ff",
    409     "unused-78ff",
    410     "unused-79ff",
    411     "unused-7aff",
    412     "unused-7bff",
    413     "unused-7cff",
    414     "unused-7dff",
    415     "unused-7eff",
    416     "unused-7fff",
    417     "unused-80ff",
    418     "unused-81ff",
    419     "unused-82ff",
    420     "unused-83ff",
    421     "unused-84ff",
    422     "unused-85ff",
    423     "unused-86ff",
    424     "unused-87ff",
    425     "unused-88ff",
    426     "unused-89ff",
    427     "unused-8aff",
    428     "unused-8bff",
    429     "unused-8cff",
    430     "unused-8dff",
    431     "unused-8eff",
    432     "unused-8fff",
    433     "unused-90ff",
    434     "unused-91ff",
    435     "unused-92ff",
    436     "unused-93ff",
    437     "unused-94ff",
    438     "unused-95ff",
    439     "unused-96ff",
    440     "unused-97ff",
    441     "unused-98ff",
    442     "unused-99ff",
    443     "unused-9aff",
    444     "unused-9bff",
    445     "unused-9cff",
    446     "unused-9dff",
    447     "unused-9eff",
    448     "unused-9fff",
    449     "unused-a0ff",
    450     "unused-a1ff",
    451     "unused-a2ff",
    452     "unused-a3ff",
    453     "unused-a4ff",
    454     "unused-a5ff",
    455     "unused-a6ff",
    456     "unused-a7ff",
    457     "unused-a8ff",
    458     "unused-a9ff",
    459     "unused-aaff",
    460     "unused-abff",
    461     "unused-acff",
    462     "unused-adff",
    463     "unused-aeff",
    464     "unused-afff",
    465     "unused-b0ff",
    466     "unused-b1ff",
    467     "unused-b2ff",
    468     "unused-b3ff",
    469     "unused-b4ff",
    470     "unused-b5ff",
    471     "unused-b6ff",
    472     "unused-b7ff",
    473     "unused-b8ff",
    474     "unused-b9ff",
    475     "unused-baff",
    476     "unused-bbff",
    477     "unused-bcff",
    478     "unused-bdff",
    479     "unused-beff",
    480     "unused-bfff",
    481     "unused-c0ff",
    482     "unused-c1ff",
    483     "unused-c2ff",
    484     "unused-c3ff",
    485     "unused-c4ff",
    486     "unused-c5ff",
    487     "unused-c6ff",
    488     "unused-c7ff",
    489     "unused-c8ff",
    490     "unused-c9ff",
    491     "unused-caff",
    492     "unused-cbff",
    493     "unused-ccff",
    494     "unused-cdff",
    495     "unused-ceff",
    496     "unused-cfff",
    497     "unused-d0ff",
    498     "unused-d1ff",
    499     "unused-d2ff",
    500     "unused-d3ff",
    501     "unused-d4ff",
    502     "unused-d5ff",
    503     "unused-d6ff",
    504     "unused-d7ff",
    505     "unused-d8ff",
    506     "unused-d9ff",
    507     "unused-daff",
    508     "unused-dbff",
    509     "unused-dcff",
    510     "unused-ddff",
    511     "unused-deff",
    512     "unused-dfff",
    513     "unused-e0ff",
    514     "unused-e1ff",
    515     "unused-e2ff",
    516     "unused-e3ff",
    517     "unused-e4ff",
    518     "unused-e5ff",
    519     "unused-e6ff",
    520     "unused-e7ff",
    521     "unused-e8ff",
    522     "unused-e9ff",
    523     "unused-eaff",
    524     "unused-ebff",
    525     "unused-ecff",
    526     "unused-edff",
    527     "unused-eeff",
    528     "unused-efff",
    529     "unused-f0ff",
    530     "unused-f1ff",
    531     "+invoke-object-init/jumbo",
    532     "+iget-volatile/jumbo",
    533     "+iget-wide-volatile/jumbo",
    534     "+iget-object-volatile/jumbo",
    535     "+iput-volatile/jumbo",
    536     "+iput-wide-volatile/jumbo",
    537     "+iput-object-volatile/jumbo",
    538     "+sget-volatile/jumbo",
    539     "+sget-wide-volatile/jumbo",
    540     "+sget-object-volatile/jumbo",
    541     "+sput-volatile/jumbo",
    542     "+sput-wide-volatile/jumbo",
    543     "+sput-object-volatile/jumbo",
    544     "^throw-verification-error/jumbo",
    545     // END(libdex-opcode-names)
    546 };
    547 
    548 /*
    549  * Return the name of an opcode.
    550  */
    551 const char* dexGetOpcodeName(Opcode op)
    552 {
    553     assert(op >= 0 && op < kNumPackedOpcodes);
    554     return gOpNames[op];
    555 }
    556