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