/* * Copyright (C) 2008 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * Table of Dalvik opcode names. * * IMPORTANT NOTE: The contents of this file are mostly generated * automatically by the opcode-gen tool. Any edits to the generated * sections will get wiped out the next time the tool is run. */ #include "DexOpcodes.h" #include <assert.h> /* * Dalvik opcode names. */ static const char* gOpNames[kNumPackedOpcodes] = { // BEGIN(libdex-opcode-names); GENERATED AUTOMATICALLY BY opcode-gen "nop", "move", "move/from16", "move/16", "move-wide", "move-wide/from16", "move-wide/16", "move-object", "move-object/from16", "move-object/16", "move-result", "move-result-wide", "move-result-object", "move-exception", "return-void", "return", "return-wide", "return-object", "const/4", "const/16", "const", "const/high16", "const-wide/16", "const-wide/32", "const-wide", "const-wide/high16", "const-string", "const-string/jumbo", "const-class", "monitor-enter", "monitor-exit", "check-cast", "instance-of", "array-length", "new-instance", "new-array", "filled-new-array", "filled-new-array/range", "fill-array-data", "throw", "goto", "goto/16", "goto/32", "packed-switch", "sparse-switch", "cmpl-float", "cmpg-float", "cmpl-double", "cmpg-double", "cmp-long", "if-eq", "if-ne", "if-lt", "if-ge", "if-gt", "if-le", "if-eqz", "if-nez", "if-ltz", "if-gez", "if-gtz", "if-lez", "unused-3e", "unused-3f", "unused-40", "unused-41", "unused-42", "unused-43", "aget", "aget-wide", "aget-object", "aget-boolean", "aget-byte", "aget-char", "aget-short", "aput", "aput-wide", "aput-object", "aput-boolean", "aput-byte", "aput-char", "aput-short", "iget", "iget-wide", "iget-object", "iget-boolean", "iget-byte", "iget-char", "iget-short", "iput", "iput-wide", "iput-object", "iput-boolean", "iput-byte", "iput-char", "iput-short", "sget", "sget-wide", "sget-object", "sget-boolean", "sget-byte", "sget-char", "sget-short", "sput", "sput-wide", "sput-object", "sput-boolean", "sput-byte", "sput-char", "sput-short", "invoke-virtual", "invoke-super", "invoke-direct", "invoke-static", "invoke-interface", "unused-73", "invoke-virtual/range", "invoke-super/range", "invoke-direct/range", "invoke-static/range", "invoke-interface/range", "unused-79", "unused-7a", "neg-int", "not-int", "neg-long", "not-long", "neg-float", "neg-double", "int-to-long", "int-to-float", "int-to-double", "long-to-int", "long-to-float", "long-to-double", "float-to-int", "float-to-long", "float-to-double", "double-to-int", "double-to-long", "double-to-float", "int-to-byte", "int-to-char", "int-to-short", "add-int", "sub-int", "mul-int", "div-int", "rem-int", "and-int", "or-int", "xor-int", "shl-int", "shr-int", "ushr-int", "add-long", "sub-long", "mul-long", "div-long", "rem-long", "and-long", "or-long", "xor-long", "shl-long", "shr-long", "ushr-long", "add-float", "sub-float", "mul-float", "div-float", "rem-float", "add-double", "sub-double", "mul-double", "div-double", "rem-double", "add-int/2addr", "sub-int/2addr", "mul-int/2addr", "div-int/2addr", "rem-int/2addr", "and-int/2addr", "or-int/2addr", "xor-int/2addr", "shl-int/2addr", "shr-int/2addr", "ushr-int/2addr", "add-long/2addr", "sub-long/2addr", "mul-long/2addr", "div-long/2addr", "rem-long/2addr", "and-long/2addr", "or-long/2addr", "xor-long/2addr", "shl-long/2addr", "shr-long/2addr", "ushr-long/2addr", "add-float/2addr", "sub-float/2addr", "mul-float/2addr", "div-float/2addr", "rem-float/2addr", "add-double/2addr", "sub-double/2addr", "mul-double/2addr", "div-double/2addr", "rem-double/2addr", "add-int/lit16", "rsub-int", "mul-int/lit16", "div-int/lit16", "rem-int/lit16", "and-int/lit16", "or-int/lit16", "xor-int/lit16", "add-int/lit8", "rsub-int/lit8", "mul-int/lit8", "div-int/lit8", "rem-int/lit8", "and-int/lit8", "or-int/lit8", "xor-int/lit8", "shl-int/lit8", "shr-int/lit8", "ushr-int/lit8", "+iget-volatile", "+iput-volatile", "+sget-volatile", "+sput-volatile", "+iget-object-volatile", "+iget-wide-volatile", "+iput-wide-volatile", "+sget-wide-volatile", "+sput-wide-volatile", "^breakpoint", "^throw-verification-error", "+execute-inline", "+execute-inline/range", "+invoke-object-init/range", "+return-void-barrier", "+iget-quick", "+iget-wide-quick", "+iget-object-quick", "+iput-quick", "+iput-wide-quick", "+iput-object-quick", "+invoke-virtual-quick", "+invoke-virtual-quick/range", "+invoke-super-quick", "+invoke-super-quick/range", "+iput-object-volatile", "+sget-object-volatile", "+sput-object-volatile", "dispatch-ff", "const-class/jumbo", "check-cast/jumbo", "instance-of/jumbo", "new-instance/jumbo", "new-array/jumbo", "filled-new-array/jumbo", "iget/jumbo", "iget-wide/jumbo", "iget-object/jumbo", "iget-boolean/jumbo", "iget-byte/jumbo", "iget-char/jumbo", "iget-short/jumbo", "iput/jumbo", "iput-wide/jumbo", "iput-object/jumbo", "iput-boolean/jumbo", "iput-byte/jumbo", "iput-char/jumbo", "iput-short/jumbo", "sget/jumbo", "sget-wide/jumbo", "sget-object/jumbo", "sget-boolean/jumbo", "sget-byte/jumbo", "sget-char/jumbo", "sget-short/jumbo", "sput/jumbo", "sput-wide/jumbo", "sput-object/jumbo", "sput-boolean/jumbo", "sput-byte/jumbo", "sput-char/jumbo", "sput-short/jumbo", "invoke-virtual/jumbo", "invoke-super/jumbo", "invoke-direct/jumbo", "invoke-static/jumbo", "invoke-interface/jumbo", "unused-27ff", "unused-28ff", "unused-29ff", "unused-2aff", "unused-2bff", "unused-2cff", "unused-2dff", "unused-2eff", "unused-2fff", "unused-30ff", "unused-31ff", "unused-32ff", "unused-33ff", "unused-34ff", "unused-35ff", "unused-36ff", "unused-37ff", "unused-38ff", "unused-39ff", "unused-3aff", "unused-3bff", "unused-3cff", "unused-3dff", "unused-3eff", "unused-3fff", "unused-40ff", "unused-41ff", "unused-42ff", "unused-43ff", "unused-44ff", "unused-45ff", "unused-46ff", "unused-47ff", "unused-48ff", "unused-49ff", "unused-4aff", "unused-4bff", "unused-4cff", "unused-4dff", "unused-4eff", "unused-4fff", "unused-50ff", "unused-51ff", "unused-52ff", "unused-53ff", "unused-54ff", "unused-55ff", "unused-56ff", "unused-57ff", "unused-58ff", "unused-59ff", "unused-5aff", "unused-5bff", "unused-5cff", "unused-5dff", "unused-5eff", "unused-5fff", "unused-60ff", "unused-61ff", "unused-62ff", "unused-63ff", "unused-64ff", "unused-65ff", "unused-66ff", "unused-67ff", "unused-68ff", "unused-69ff", "unused-6aff", "unused-6bff", "unused-6cff", "unused-6dff", "unused-6eff", "unused-6fff", "unused-70ff", "unused-71ff", "unused-72ff", "unused-73ff", "unused-74ff", "unused-75ff", "unused-76ff", "unused-77ff", "unused-78ff", "unused-79ff", "unused-7aff", "unused-7bff", "unused-7cff", "unused-7dff", "unused-7eff", "unused-7fff", "unused-80ff", "unused-81ff", "unused-82ff", "unused-83ff", "unused-84ff", "unused-85ff", "unused-86ff", "unused-87ff", "unused-88ff", "unused-89ff", "unused-8aff", "unused-8bff", "unused-8cff", "unused-8dff", "unused-8eff", "unused-8fff", "unused-90ff", "unused-91ff", "unused-92ff", "unused-93ff", "unused-94ff", "unused-95ff", "unused-96ff", "unused-97ff", "unused-98ff", "unused-99ff", "unused-9aff", "unused-9bff", "unused-9cff", "unused-9dff", "unused-9eff", "unused-9fff", "unused-a0ff", "unused-a1ff", "unused-a2ff", "unused-a3ff", "unused-a4ff", "unused-a5ff", "unused-a6ff", "unused-a7ff", "unused-a8ff", "unused-a9ff", "unused-aaff", "unused-abff", "unused-acff", "unused-adff", "unused-aeff", "unused-afff", "unused-b0ff", "unused-b1ff", "unused-b2ff", "unused-b3ff", "unused-b4ff", "unused-b5ff", "unused-b6ff", "unused-b7ff", "unused-b8ff", "unused-b9ff", "unused-baff", "unused-bbff", "unused-bcff", "unused-bdff", "unused-beff", "unused-bfff", "unused-c0ff", "unused-c1ff", "unused-c2ff", "unused-c3ff", "unused-c4ff", "unused-c5ff", "unused-c6ff", "unused-c7ff", "unused-c8ff", "unused-c9ff", "unused-caff", "unused-cbff", "unused-ccff", "unused-cdff", "unused-ceff", "unused-cfff", "unused-d0ff", "unused-d1ff", "unused-d2ff", "unused-d3ff", "unused-d4ff", "unused-d5ff", "unused-d6ff", "unused-d7ff", "unused-d8ff", "unused-d9ff", "unused-daff", "unused-dbff", "unused-dcff", "unused-ddff", "unused-deff", "unused-dfff", "unused-e0ff", "unused-e1ff", "unused-e2ff", "unused-e3ff", "unused-e4ff", "unused-e5ff", "unused-e6ff", "unused-e7ff", "unused-e8ff", "unused-e9ff", "unused-eaff", "unused-ebff", "unused-ecff", "unused-edff", "unused-eeff", "unused-efff", "unused-f0ff", "unused-f1ff", "+invoke-object-init/jumbo", "+iget-volatile/jumbo", "+iget-wide-volatile/jumbo", "+iget-object-volatile/jumbo", "+iput-volatile/jumbo", "+iput-wide-volatile/jumbo", "+iput-object-volatile/jumbo", "+sget-volatile/jumbo", "+sget-wide-volatile/jumbo", "+sget-object-volatile/jumbo", "+sput-volatile/jumbo", "+sput-wide-volatile/jumbo", "+sput-object-volatile/jumbo", "^throw-verification-error/jumbo", // END(libdex-opcode-names) }; /* * Return the name of an opcode. */ const char* dexGetOpcodeName(Opcode op) { assert(op >= 0 && op < kNumPackedOpcodes); return gOpNames[op]; }