1c05d8d40e0160037cd2294dbcd82ba3101d9a834Ben Gruver/* 2c05d8d40e0160037cd2294dbcd82ba3101d9a834Ben Gruver * Copyright 2012, Google Inc. 3c05d8d40e0160037cd2294dbcd82ba3101d9a834Ben Gruver * All rights reserved. 4c05d8d40e0160037cd2294dbcd82ba3101d9a834Ben Gruver * 5c05d8d40e0160037cd2294dbcd82ba3101d9a834Ben Gruver * Redistribution and use in source and binary forms, with or without 6c05d8d40e0160037cd2294dbcd82ba3101d9a834Ben Gruver * modification, are permitted provided that the following conditions are 7c05d8d40e0160037cd2294dbcd82ba3101d9a834Ben Gruver * met: 8c05d8d40e0160037cd2294dbcd82ba3101d9a834Ben Gruver * 9c05d8d40e0160037cd2294dbcd82ba3101d9a834Ben Gruver * * Redistributions of source code must retain the above copyright 10c05d8d40e0160037cd2294dbcd82ba3101d9a834Ben Gruver * notice, this list of conditions and the following disclaimer. 11c05d8d40e0160037cd2294dbcd82ba3101d9a834Ben Gruver * * Redistributions in binary form must reproduce the above 12c05d8d40e0160037cd2294dbcd82ba3101d9a834Ben Gruver * copyright notice, this list of conditions and the following disclaimer 13c05d8d40e0160037cd2294dbcd82ba3101d9a834Ben Gruver * in the documentation and/or other materials provided with the 14c05d8d40e0160037cd2294dbcd82ba3101d9a834Ben Gruver * distribution. 15c05d8d40e0160037cd2294dbcd82ba3101d9a834Ben Gruver * * Neither the name of Google Inc. nor the names of its 16c05d8d40e0160037cd2294dbcd82ba3101d9a834Ben Gruver * contributors may be used to endorse or promote products derived from 17c05d8d40e0160037cd2294dbcd82ba3101d9a834Ben Gruver * this software without specific prior written permission. 18c05d8d40e0160037cd2294dbcd82ba3101d9a834Ben Gruver * 19c05d8d40e0160037cd2294dbcd82ba3101d9a834Ben Gruver * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 20c05d8d40e0160037cd2294dbcd82ba3101d9a834Ben Gruver * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 21c05d8d40e0160037cd2294dbcd82ba3101d9a834Ben Gruver * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 22c05d8d40e0160037cd2294dbcd82ba3101d9a834Ben Gruver * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 23c05d8d40e0160037cd2294dbcd82ba3101d9a834Ben Gruver * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 24c05d8d40e0160037cd2294dbcd82ba3101d9a834Ben Gruver * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 25c05d8d40e0160037cd2294dbcd82ba3101d9a834Ben Gruver * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 26c05d8d40e0160037cd2294dbcd82ba3101d9a834Ben Gruver * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 27c05d8d40e0160037cd2294dbcd82ba3101d9a834Ben Gruver * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 28c05d8d40e0160037cd2294dbcd82ba3101d9a834Ben Gruver * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 29c05d8d40e0160037cd2294dbcd82ba3101d9a834Ben Gruver * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 30c05d8d40e0160037cd2294dbcd82ba3101d9a834Ben Gruver */ 31c05d8d40e0160037cd2294dbcd82ba3101d9a834Ben Gruver 32c05d8d40e0160037cd2294dbcd82ba3101d9a834Ben Gruverpackage org.jf.dexlib2; 33c05d8d40e0160037cd2294dbcd82ba3101d9a834Ben Gruver 34c05d8d40e0160037cd2294dbcd82ba3101d9a834Ben Gruverpublic enum Opcode 35c05d8d40e0160037cd2294dbcd82ba3101d9a834Ben Gruver{ 3670aa787967e18fd782f47a0b5508271637577c30Ben Gruver NOP((short)0x00, "nop", ReferenceType.NONE, Format.Format10x, Opcode.CAN_CONTINUE), 3770aa787967e18fd782f47a0b5508271637577c30Ben Gruver MOVE((short)0x01, "move", ReferenceType.NONE, Format.Format12x, Opcode.CAN_CONTINUE | Opcode.SETS_REGISTER), 3870aa787967e18fd782f47a0b5508271637577c30Ben Gruver MOVE_FROM16((short)0x02, "move/from16", ReferenceType.NONE, Format.Format22x, Opcode.CAN_CONTINUE | Opcode.SETS_REGISTER), 3970aa787967e18fd782f47a0b5508271637577c30Ben Gruver MOVE_16((short)0x03, "move/16", ReferenceType.NONE, Format.Format32x, Opcode.CAN_CONTINUE | Opcode.SETS_REGISTER), 4070aa787967e18fd782f47a0b5508271637577c30Ben Gruver MOVE_WIDE((short)0x04, "move-wide", ReferenceType.NONE, Format.Format12x, Opcode.CAN_CONTINUE | Opcode.SETS_REGISTER | Opcode.SETS_WIDE_REGISTER), 4170aa787967e18fd782f47a0b5508271637577c30Ben Gruver MOVE_WIDE_FROM16((short)0x05, "move-wide/from16", ReferenceType.NONE, Format.Format22x, Opcode.CAN_CONTINUE | Opcode.SETS_REGISTER | Opcode.SETS_WIDE_REGISTER), 4270aa787967e18fd782f47a0b5508271637577c30Ben Gruver MOVE_WIDE_16((short)0x06, "move-wide/16", ReferenceType.NONE, Format.Format32x, Opcode.CAN_CONTINUE | Opcode.SETS_REGISTER | Opcode.SETS_WIDE_REGISTER), 4370aa787967e18fd782f47a0b5508271637577c30Ben Gruver MOVE_OBJECT((short)0x07, "move-object", ReferenceType.NONE, Format.Format12x, Opcode.CAN_CONTINUE | Opcode.SETS_REGISTER), 4470aa787967e18fd782f47a0b5508271637577c30Ben Gruver MOVE_OBJECT_FROM16((short)0x08, "move-object/from16", ReferenceType.NONE, Format.Format22x, Opcode.CAN_CONTINUE | Opcode.SETS_REGISTER), 4570aa787967e18fd782f47a0b5508271637577c30Ben Gruver MOVE_OBJECT_16((short)0x09, "move-object/16", ReferenceType.NONE, Format.Format32x, Opcode.CAN_CONTINUE | Opcode.SETS_REGISTER), 4670aa787967e18fd782f47a0b5508271637577c30Ben Gruver MOVE_RESULT((short)0x0a, "move-result", ReferenceType.NONE, Format.Format11x, Opcode.CAN_CONTINUE | Opcode.SETS_REGISTER), 4770aa787967e18fd782f47a0b5508271637577c30Ben Gruver MOVE_RESULT_WIDE((short)0x0b, "move-result-wide", ReferenceType.NONE, Format.Format11x, Opcode.CAN_CONTINUE | Opcode.SETS_REGISTER | Opcode.SETS_WIDE_REGISTER), 4870aa787967e18fd782f47a0b5508271637577c30Ben Gruver MOVE_RESULT_OBJECT((short)0x0c, "move-result-object", ReferenceType.NONE, Format.Format11x, Opcode.CAN_CONTINUE | Opcode.SETS_REGISTER), 4970aa787967e18fd782f47a0b5508271637577c30Ben Gruver MOVE_EXCEPTION((short)0x0d, "move-exception", ReferenceType.NONE, Format.Format11x, Opcode.CAN_CONTINUE | Opcode.SETS_REGISTER), 5070aa787967e18fd782f47a0b5508271637577c30Ben Gruver RETURN_VOID((short)0x0e, "return-void", ReferenceType.NONE, Format.Format10x), 5170aa787967e18fd782f47a0b5508271637577c30Ben Gruver RETURN((short)0x0f, "return", ReferenceType.NONE, Format.Format11x), 5270aa787967e18fd782f47a0b5508271637577c30Ben Gruver RETURN_WIDE((short)0x10, "return-wide", ReferenceType.NONE, Format.Format11x), 5370aa787967e18fd782f47a0b5508271637577c30Ben Gruver RETURN_OBJECT((short)0x11, "return-object", ReferenceType.NONE, Format.Format11x), 5470aa787967e18fd782f47a0b5508271637577c30Ben Gruver CONST_4((short)0x12, "const/4", ReferenceType.NONE, Format.Format11n, Opcode.CAN_CONTINUE | Opcode.SETS_REGISTER), 5570aa787967e18fd782f47a0b5508271637577c30Ben Gruver CONST_16((short)0x13, "const/16", ReferenceType.NONE, Format.Format21s, Opcode.CAN_CONTINUE | Opcode.SETS_REGISTER), 5670aa787967e18fd782f47a0b5508271637577c30Ben Gruver CONST((short)0x14, "const", ReferenceType.NONE, Format.Format31i, Opcode.CAN_CONTINUE | Opcode.SETS_REGISTER), 5770aa787967e18fd782f47a0b5508271637577c30Ben Gruver CONST_HIGH16((short)0x15, "const/high16", ReferenceType.NONE, Format.Format21ih, Opcode.CAN_CONTINUE | Opcode.SETS_REGISTER), 5870aa787967e18fd782f47a0b5508271637577c30Ben Gruver CONST_WIDE_16((short)0x16, "const-wide/16", ReferenceType.NONE, Format.Format21s, Opcode.CAN_CONTINUE | Opcode.SETS_REGISTER | Opcode.SETS_WIDE_REGISTER), 5970aa787967e18fd782f47a0b5508271637577c30Ben Gruver CONST_WIDE_32((short)0x17, "const-wide/32", ReferenceType.NONE, Format.Format31i, Opcode.CAN_CONTINUE | Opcode.SETS_REGISTER | Opcode.SETS_WIDE_REGISTER), 6070aa787967e18fd782f47a0b5508271637577c30Ben Gruver CONST_WIDE((short)0x18, "const-wide", ReferenceType.NONE, Format.Format51l, Opcode.CAN_CONTINUE | Opcode.SETS_REGISTER | Opcode.SETS_WIDE_REGISTER), 6170aa787967e18fd782f47a0b5508271637577c30Ben Gruver CONST_WIDE_HIGH16((short)0x19, "const-wide/high16", ReferenceType.NONE, Format.Format21lh, Opcode.CAN_CONTINUE | Opcode.SETS_REGISTER | Opcode.SETS_WIDE_REGISTER), 6270aa787967e18fd782f47a0b5508271637577c30Ben Gruver CONST_STRING((short)0x1a, "const-string", ReferenceType.STRING, Format.Format21c, Opcode.CAN_THROW | Opcode.CAN_CONTINUE | Opcode.SETS_REGISTER, (short)0x1b), 6370aa787967e18fd782f47a0b5508271637577c30Ben Gruver CONST_STRING_JUMBO((short)0x1b, "const-string/jumbo", ReferenceType.STRING, Format.Format31c, Opcode.CAN_THROW | Opcode.CAN_CONTINUE | Opcode.SETS_REGISTER), 6470aa787967e18fd782f47a0b5508271637577c30Ben Gruver CONST_CLASS((short)0x1c, "const-class", ReferenceType.TYPE, Format.Format21c, Opcode.CAN_THROW | Opcode.CAN_CONTINUE | Opcode.SETS_REGISTER), 6570aa787967e18fd782f47a0b5508271637577c30Ben Gruver MONITOR_ENTER((short)0x1d, "monitor-enter", ReferenceType.NONE, Format.Format11x, Opcode.CAN_THROW | Opcode.CAN_CONTINUE), 6670aa787967e18fd782f47a0b5508271637577c30Ben Gruver MONITOR_EXIT((short)0x1e, "monitor-exit", ReferenceType.NONE, Format.Format11x, Opcode.CAN_THROW | Opcode.CAN_CONTINUE), 6770aa787967e18fd782f47a0b5508271637577c30Ben Gruver CHECK_CAST((short)0x1f, "check-cast", ReferenceType.TYPE, Format.Format21c, Opcode.CAN_THROW | Opcode.CAN_CONTINUE | Opcode.SETS_REGISTER), 6870aa787967e18fd782f47a0b5508271637577c30Ben Gruver INSTANCE_OF((short)0x20, "instance-of", ReferenceType.TYPE, Format.Format22c, Opcode.CAN_THROW | Opcode.CAN_CONTINUE | Opcode.SETS_REGISTER), 6970aa787967e18fd782f47a0b5508271637577c30Ben Gruver ARRAY_LENGTH((short)0x21, "array-length", ReferenceType.NONE, Format.Format12x, Opcode.CAN_THROW | Opcode.CAN_CONTINUE | Opcode.SETS_REGISTER), 7070aa787967e18fd782f47a0b5508271637577c30Ben Gruver NEW_INSTANCE((short)0x22, "new-instance", ReferenceType.TYPE, Format.Format21c, Opcode.CAN_THROW | Opcode.CAN_CONTINUE | Opcode.SETS_REGISTER), 7170aa787967e18fd782f47a0b5508271637577c30Ben Gruver NEW_ARRAY((short)0x23, "new-array", ReferenceType.TYPE, Format.Format22c, Opcode.CAN_THROW | Opcode.CAN_CONTINUE | Opcode.SETS_REGISTER), 7270aa787967e18fd782f47a0b5508271637577c30Ben Gruver FILLED_NEW_ARRAY((short)0x24, "filled-new-array", ReferenceType.TYPE, Format.Format35c, Opcode.CAN_THROW | Opcode.CAN_CONTINUE | Opcode.SETS_RESULT), 7370aa787967e18fd782f47a0b5508271637577c30Ben Gruver FILLED_NEW_ARRAY_RANGE((short)0x25, "filled-new-array/range", ReferenceType.TYPE, Format.Format3rc, Opcode.CAN_THROW | Opcode.CAN_CONTINUE | Opcode.SETS_RESULT), 7470aa787967e18fd782f47a0b5508271637577c30Ben Gruver FILL_ARRAY_DATA((short)0x26, "fill-array-data", ReferenceType.NONE, Format.Format31t, Opcode.CAN_CONTINUE), 7570aa787967e18fd782f47a0b5508271637577c30Ben Gruver THROW((short)0x27, "throw", ReferenceType.NONE, Format.Format11x, Opcode.CAN_THROW), 7670aa787967e18fd782f47a0b5508271637577c30Ben Gruver GOTO((short)0x28, "goto", ReferenceType.NONE, Format.Format10t), 7770aa787967e18fd782f47a0b5508271637577c30Ben Gruver GOTO_16((short)0x29, "goto/16", ReferenceType.NONE, Format.Format20t), 7870aa787967e18fd782f47a0b5508271637577c30Ben Gruver GOTO_32((short)0x2a, "goto/32", ReferenceType.NONE, Format.Format30t), 7970aa787967e18fd782f47a0b5508271637577c30Ben Gruver PACKED_SWITCH((short)0x2b, "packed-switch", ReferenceType.NONE, Format.Format31t, Opcode.CAN_CONTINUE), 8070aa787967e18fd782f47a0b5508271637577c30Ben Gruver SPARSE_SWITCH((short)0x2c, "sparse-switch", ReferenceType.NONE, Format.Format31t, Opcode.CAN_CONTINUE), 8170aa787967e18fd782f47a0b5508271637577c30Ben Gruver CMPL_FLOAT((short)0x2d, "cmpl-float", ReferenceType.NONE, Format.Format23x, Opcode.CAN_CONTINUE | Opcode.SETS_REGISTER), 8270aa787967e18fd782f47a0b5508271637577c30Ben Gruver CMPG_FLOAT((short)0x2e, "cmpg-float", ReferenceType.NONE, Format.Format23x, Opcode.CAN_CONTINUE | Opcode.SETS_REGISTER), 8370aa787967e18fd782f47a0b5508271637577c30Ben Gruver CMPL_DOUBLE((short)0x2f, "cmpl-double", ReferenceType.NONE, Format.Format23x, Opcode.CAN_CONTINUE | Opcode.SETS_REGISTER), 8470aa787967e18fd782f47a0b5508271637577c30Ben Gruver CMPG_DOUBLE((short)0x30, "cmpg-double", ReferenceType.NONE, Format.Format23x, Opcode.CAN_CONTINUE | Opcode.SETS_REGISTER), 8570aa787967e18fd782f47a0b5508271637577c30Ben Gruver CMP_LONG((short)0x31, "cmp-long", ReferenceType.NONE, Format.Format23x, Opcode.CAN_CONTINUE | Opcode.SETS_REGISTER), 8670aa787967e18fd782f47a0b5508271637577c30Ben Gruver IF_EQ((short)0x32, "if-eq", ReferenceType.NONE, Format.Format22t, Opcode.CAN_CONTINUE), 8770aa787967e18fd782f47a0b5508271637577c30Ben Gruver IF_NE((short)0x33, "if-ne", ReferenceType.NONE, Format.Format22t, Opcode.CAN_CONTINUE), 8870aa787967e18fd782f47a0b5508271637577c30Ben Gruver IF_LT((short)0x34, "if-lt", ReferenceType.NONE, Format.Format22t, Opcode.CAN_CONTINUE), 8970aa787967e18fd782f47a0b5508271637577c30Ben Gruver IF_GE((short)0x35, "if-ge", ReferenceType.NONE, Format.Format22t, Opcode.CAN_CONTINUE), 9070aa787967e18fd782f47a0b5508271637577c30Ben Gruver IF_GT((short)0x36, "if-gt", ReferenceType.NONE, Format.Format22t, Opcode.CAN_CONTINUE), 9170aa787967e18fd782f47a0b5508271637577c30Ben Gruver IF_LE((short)0x37, "if-le", ReferenceType.NONE, Format.Format22t, Opcode.CAN_CONTINUE), 9270aa787967e18fd782f47a0b5508271637577c30Ben Gruver IF_EQZ((short)0x38, "if-eqz", ReferenceType.NONE, Format.Format21t, Opcode.CAN_CONTINUE), 9370aa787967e18fd782f47a0b5508271637577c30Ben Gruver IF_NEZ((short)0x39, "if-nez", ReferenceType.NONE, Format.Format21t, Opcode.CAN_CONTINUE), 9470aa787967e18fd782f47a0b5508271637577c30Ben Gruver IF_LTZ((short)0x3a, "if-ltz", ReferenceType.NONE, Format.Format21t, Opcode.CAN_CONTINUE), 9570aa787967e18fd782f47a0b5508271637577c30Ben Gruver IF_GEZ((short)0x3b, "if-gez", ReferenceType.NONE, Format.Format21t, Opcode.CAN_CONTINUE), 9670aa787967e18fd782f47a0b5508271637577c30Ben Gruver IF_GTZ((short)0x3c, "if-gtz", ReferenceType.NONE, Format.Format21t, Opcode.CAN_CONTINUE), 9770aa787967e18fd782f47a0b5508271637577c30Ben Gruver IF_LEZ((short)0x3d, "if-lez", ReferenceType.NONE, Format.Format21t, Opcode.CAN_CONTINUE), 9870aa787967e18fd782f47a0b5508271637577c30Ben Gruver AGET((short)0x44, "aget", ReferenceType.NONE, Format.Format23x, Opcode.CAN_THROW | Opcode.CAN_CONTINUE | Opcode.SETS_REGISTER), 9970aa787967e18fd782f47a0b5508271637577c30Ben Gruver AGET_WIDE((short)0x45, "aget-wide", ReferenceType.NONE, Format.Format23x, Opcode.CAN_THROW | Opcode.CAN_CONTINUE | Opcode.SETS_REGISTER | Opcode.SETS_WIDE_REGISTER), 10070aa787967e18fd782f47a0b5508271637577c30Ben Gruver AGET_OBJECT((short)0x46, "aget-object", ReferenceType.NONE, Format.Format23x, Opcode.CAN_THROW | Opcode.CAN_CONTINUE | Opcode.SETS_REGISTER), 10170aa787967e18fd782f47a0b5508271637577c30Ben Gruver AGET_BOOLEAN((short)0x47, "aget-boolean", ReferenceType.NONE, Format.Format23x, Opcode.CAN_THROW | Opcode.CAN_CONTINUE | Opcode.SETS_REGISTER), 10270aa787967e18fd782f47a0b5508271637577c30Ben Gruver AGET_BYTE((short)0x48, "aget-byte", ReferenceType.NONE, Format.Format23x, Opcode.CAN_THROW | Opcode.CAN_CONTINUE | Opcode.SETS_REGISTER), 10370aa787967e18fd782f47a0b5508271637577c30Ben Gruver AGET_CHAR((short)0x49, "aget-char", ReferenceType.NONE, Format.Format23x, Opcode.CAN_THROW | Opcode.CAN_CONTINUE | Opcode.SETS_REGISTER), 10470aa787967e18fd782f47a0b5508271637577c30Ben Gruver AGET_SHORT((short)0x4a, "aget-short", ReferenceType.NONE, Format.Format23x, Opcode.CAN_THROW | Opcode.CAN_CONTINUE | Opcode.SETS_REGISTER), 10570aa787967e18fd782f47a0b5508271637577c30Ben Gruver APUT((short)0x4b, "aput", ReferenceType.NONE, Format.Format23x, Opcode.CAN_THROW | Opcode.CAN_CONTINUE), 10670aa787967e18fd782f47a0b5508271637577c30Ben Gruver APUT_WIDE((short)0x4c, "aput-wide", ReferenceType.NONE, Format.Format23x, Opcode.CAN_THROW | Opcode.CAN_CONTINUE), 10770aa787967e18fd782f47a0b5508271637577c30Ben Gruver APUT_OBJECT((short)0x4d, "aput-object", ReferenceType.NONE, Format.Format23x, Opcode.CAN_THROW | Opcode.CAN_CONTINUE), 10870aa787967e18fd782f47a0b5508271637577c30Ben Gruver APUT_BOOLEAN((short)0x4e, "aput-boolean", ReferenceType.NONE, Format.Format23x, Opcode.CAN_THROW | Opcode.CAN_CONTINUE), 10970aa787967e18fd782f47a0b5508271637577c30Ben Gruver APUT_BYTE((short)0x4f, "aput-byte", ReferenceType.NONE, Format.Format23x, Opcode.CAN_THROW | Opcode.CAN_CONTINUE), 11070aa787967e18fd782f47a0b5508271637577c30Ben Gruver APUT_CHAR((short)0x50, "aput-char", ReferenceType.NONE, Format.Format23x, Opcode.CAN_THROW | Opcode.CAN_CONTINUE), 11170aa787967e18fd782f47a0b5508271637577c30Ben Gruver APUT_SHORT((short)0x51, "aput-short", ReferenceType.NONE, Format.Format23x, Opcode.CAN_THROW | Opcode.CAN_CONTINUE), 11270aa787967e18fd782f47a0b5508271637577c30Ben Gruver IGET((short)0x52, "iget", ReferenceType.FIELD, Format.Format22c, Opcode.CAN_THROW | Opcode.CAN_CONTINUE | Opcode.SETS_REGISTER), 11370aa787967e18fd782f47a0b5508271637577c30Ben Gruver IGET_WIDE((short)0x53, "iget-wide", ReferenceType.FIELD, Format.Format22c, Opcode.CAN_THROW | Opcode.CAN_CONTINUE | Opcode.SETS_REGISTER | Opcode.SETS_WIDE_REGISTER), 11470aa787967e18fd782f47a0b5508271637577c30Ben Gruver IGET_OBJECT((short)0x54, "iget-object", ReferenceType.FIELD, Format.Format22c, Opcode.CAN_THROW | Opcode.CAN_CONTINUE | Opcode.SETS_REGISTER), 11570aa787967e18fd782f47a0b5508271637577c30Ben Gruver IGET_BOOLEAN((short)0x55, "iget-boolean", ReferenceType.FIELD, Format.Format22c, Opcode.CAN_THROW | Opcode.CAN_CONTINUE | Opcode.SETS_REGISTER), 11670aa787967e18fd782f47a0b5508271637577c30Ben Gruver IGET_BYTE((short)0x56, "iget-byte", ReferenceType.FIELD, Format.Format22c, Opcode.CAN_THROW | Opcode.CAN_CONTINUE | Opcode.SETS_REGISTER), 11770aa787967e18fd782f47a0b5508271637577c30Ben Gruver IGET_CHAR((short)0x57, "iget-char", ReferenceType.FIELD, Format.Format22c, Opcode.CAN_THROW | Opcode.CAN_CONTINUE | Opcode.SETS_REGISTER), 11870aa787967e18fd782f47a0b5508271637577c30Ben Gruver IGET_SHORT((short)0x58, "iget-short", ReferenceType.FIELD, Format.Format22c, Opcode.CAN_THROW | Opcode.CAN_CONTINUE | Opcode.SETS_REGISTER), 11970aa787967e18fd782f47a0b5508271637577c30Ben Gruver IPUT((short)0x59, "iput", ReferenceType.FIELD, Format.Format22c, Opcode.CAN_THROW | Opcode.CAN_CONTINUE), 12070aa787967e18fd782f47a0b5508271637577c30Ben Gruver IPUT_WIDE((short)0x5a, "iput-wide", ReferenceType.FIELD, Format.Format22c, Opcode.CAN_THROW | Opcode.CAN_CONTINUE), 12170aa787967e18fd782f47a0b5508271637577c30Ben Gruver IPUT_OBJECT((short)0x5b, "iput-object", ReferenceType.FIELD, Format.Format22c, Opcode.CAN_THROW | Opcode.CAN_CONTINUE), 12270aa787967e18fd782f47a0b5508271637577c30Ben Gruver IPUT_BOOLEAN((short)0x5c, "iput-boolean", ReferenceType.FIELD, Format.Format22c, Opcode.CAN_THROW | Opcode.CAN_CONTINUE), 12370aa787967e18fd782f47a0b5508271637577c30Ben Gruver IPUT_BYTE((short)0x5d, "iput-byte", ReferenceType.FIELD, Format.Format22c, Opcode.CAN_THROW | Opcode.CAN_CONTINUE), 12470aa787967e18fd782f47a0b5508271637577c30Ben Gruver IPUT_CHAR((short)0x5e, "iput-char", ReferenceType.FIELD, Format.Format22c, Opcode.CAN_THROW | Opcode.CAN_CONTINUE), 12570aa787967e18fd782f47a0b5508271637577c30Ben Gruver IPUT_SHORT((short)0x5f, "iput-short", ReferenceType.FIELD, Format.Format22c, Opcode.CAN_THROW | Opcode.CAN_CONTINUE), 12670aa787967e18fd782f47a0b5508271637577c30Ben Gruver SGET((short)0x60, "sget", ReferenceType.FIELD, Format.Format21c, Opcode.CAN_THROW | Opcode.CAN_CONTINUE | Opcode.SETS_REGISTER), 12770aa787967e18fd782f47a0b5508271637577c30Ben Gruver SGET_WIDE((short)0x61, "sget-wide", ReferenceType.FIELD, Format.Format21c, Opcode.CAN_THROW | Opcode.CAN_CONTINUE | Opcode.SETS_REGISTER | Opcode.SETS_WIDE_REGISTER), 12870aa787967e18fd782f47a0b5508271637577c30Ben Gruver SGET_OBJECT((short)0x62, "sget-object", ReferenceType.FIELD, Format.Format21c, Opcode.CAN_THROW | Opcode.CAN_CONTINUE | Opcode.SETS_REGISTER), 12970aa787967e18fd782f47a0b5508271637577c30Ben Gruver SGET_BOOLEAN((short)0x63, "sget-boolean", ReferenceType.FIELD, Format.Format21c, Opcode.CAN_THROW | Opcode.CAN_CONTINUE | Opcode.SETS_REGISTER), 13070aa787967e18fd782f47a0b5508271637577c30Ben Gruver SGET_BYTE((short)0x64, "sget-byte", ReferenceType.FIELD, Format.Format21c, Opcode.CAN_THROW | Opcode.CAN_CONTINUE | Opcode.SETS_REGISTER), 13170aa787967e18fd782f47a0b5508271637577c30Ben Gruver SGET_CHAR((short)0x65, "sget-char", ReferenceType.FIELD, Format.Format21c, Opcode.CAN_THROW | Opcode.CAN_CONTINUE | Opcode.SETS_REGISTER), 13270aa787967e18fd782f47a0b5508271637577c30Ben Gruver SGET_SHORT((short)0x66, "sget-short", ReferenceType.FIELD, Format.Format21c, Opcode.CAN_THROW | Opcode.CAN_CONTINUE | Opcode.SETS_REGISTER), 13370aa787967e18fd782f47a0b5508271637577c30Ben Gruver SPUT((short)0x67, "sput", ReferenceType.FIELD, Format.Format21c, Opcode.CAN_THROW | Opcode.CAN_CONTINUE), 13470aa787967e18fd782f47a0b5508271637577c30Ben Gruver SPUT_WIDE((short)0x68, "sput-wide", ReferenceType.FIELD, Format.Format21c, Opcode.CAN_THROW | Opcode.CAN_CONTINUE), 13570aa787967e18fd782f47a0b5508271637577c30Ben Gruver SPUT_OBJECT((short)0x69, "sput-object", ReferenceType.FIELD, Format.Format21c, Opcode.CAN_THROW | Opcode.CAN_CONTINUE), 13670aa787967e18fd782f47a0b5508271637577c30Ben Gruver SPUT_BOOLEAN((short)0x6a, "sput-boolean", ReferenceType.FIELD, Format.Format21c, Opcode.CAN_THROW | Opcode.CAN_CONTINUE), 13770aa787967e18fd782f47a0b5508271637577c30Ben Gruver SPUT_BYTE((short)0x6b, "sput-byte", ReferenceType.FIELD, Format.Format21c, Opcode.CAN_THROW | Opcode.CAN_CONTINUE), 13870aa787967e18fd782f47a0b5508271637577c30Ben Gruver SPUT_CHAR((short)0x6c, "sput-char", ReferenceType.FIELD, Format.Format21c, Opcode.CAN_THROW | Opcode.CAN_CONTINUE), 13970aa787967e18fd782f47a0b5508271637577c30Ben Gruver SPUT_SHORT((short)0x6d, "sput-short", ReferenceType.FIELD, Format.Format21c, Opcode.CAN_THROW | Opcode.CAN_CONTINUE), 14070aa787967e18fd782f47a0b5508271637577c30Ben Gruver INVOKE_VIRTUAL((short)0x6e, "invoke-virtual", ReferenceType.METHOD, Format.Format35c, Opcode.CAN_THROW | Opcode.CAN_CONTINUE | Opcode.SETS_RESULT), 14170aa787967e18fd782f47a0b5508271637577c30Ben Gruver INVOKE_SUPER((short)0x6f, "invoke-super", ReferenceType.METHOD, Format.Format35c, Opcode.CAN_THROW | Opcode.CAN_CONTINUE | Opcode.SETS_RESULT), 14270aa787967e18fd782f47a0b5508271637577c30Ben Gruver INVOKE_DIRECT((short)0x70, "invoke-direct", ReferenceType.METHOD, Format.Format35c, Opcode.CAN_THROW | Opcode.CAN_CONTINUE | Opcode.SETS_RESULT | Opcode.CAN_INITIALIZE_REFERENCE), 14370aa787967e18fd782f47a0b5508271637577c30Ben Gruver INVOKE_STATIC((short)0x71, "invoke-static", ReferenceType.METHOD, Format.Format35c, Opcode.CAN_THROW | Opcode.CAN_CONTINUE | Opcode.SETS_RESULT), 14470aa787967e18fd782f47a0b5508271637577c30Ben Gruver INVOKE_INTERFACE((short)0x72, "invoke-interface", ReferenceType.METHOD, Format.Format35c, Opcode.CAN_THROW | Opcode.CAN_CONTINUE | Opcode.SETS_RESULT), 14570aa787967e18fd782f47a0b5508271637577c30Ben Gruver INVOKE_VIRTUAL_RANGE((short)0x74, "invoke-virtual/range", ReferenceType.METHOD, Format.Format3rc, Opcode.CAN_THROW | Opcode.CAN_CONTINUE | Opcode.SETS_RESULT), 14670aa787967e18fd782f47a0b5508271637577c30Ben Gruver INVOKE_SUPER_RANGE((short)0x75, "invoke-super/range", ReferenceType.METHOD, Format.Format3rc, Opcode.CAN_THROW | Opcode.CAN_CONTINUE | Opcode.SETS_RESULT), 14770aa787967e18fd782f47a0b5508271637577c30Ben Gruver INVOKE_DIRECT_RANGE((short)0x76, "invoke-direct/range", ReferenceType.METHOD, Format.Format3rc, Opcode.CAN_THROW | Opcode.CAN_CONTINUE | Opcode.SETS_RESULT | Opcode.CAN_INITIALIZE_REFERENCE), 14870aa787967e18fd782f47a0b5508271637577c30Ben Gruver INVOKE_STATIC_RANGE((short)0x77, "invoke-static/range", ReferenceType.METHOD, Format.Format3rc, Opcode.CAN_THROW | Opcode.CAN_CONTINUE | Opcode.SETS_RESULT), 14970aa787967e18fd782f47a0b5508271637577c30Ben Gruver INVOKE_INTERFACE_RANGE((short)0x78, "invoke-interface/range", ReferenceType.METHOD, Format.Format3rc, Opcode.CAN_THROW | Opcode.CAN_CONTINUE | Opcode.SETS_RESULT), 15070aa787967e18fd782f47a0b5508271637577c30Ben Gruver NEG_INT((short)0x7b, "neg-int", ReferenceType.NONE, Format.Format12x, Opcode.CAN_CONTINUE | Opcode.SETS_REGISTER), 15170aa787967e18fd782f47a0b5508271637577c30Ben Gruver NOT_INT((short)0x7c, "not-int", ReferenceType.NONE, Format.Format12x, Opcode.CAN_CONTINUE | Opcode.SETS_REGISTER), 15270aa787967e18fd782f47a0b5508271637577c30Ben Gruver NEG_LONG((short)0x7d, "neg-long", ReferenceType.NONE, Format.Format12x, Opcode.CAN_CONTINUE | Opcode.SETS_REGISTER | Opcode.SETS_WIDE_REGISTER), 15370aa787967e18fd782f47a0b5508271637577c30Ben Gruver NOT_LONG((short)0x7e, "not-long", ReferenceType.NONE, Format.Format12x, Opcode.CAN_CONTINUE | Opcode.SETS_REGISTER | Opcode.SETS_WIDE_REGISTER), 15470aa787967e18fd782f47a0b5508271637577c30Ben Gruver NEG_FLOAT((short)0x7f, "neg-float", ReferenceType.NONE, Format.Format12x, Opcode.CAN_CONTINUE | Opcode.SETS_REGISTER), 15570aa787967e18fd782f47a0b5508271637577c30Ben Gruver NEG_DOUBLE((short)0x80, "neg-double", ReferenceType.NONE, Format.Format12x, Opcode.CAN_CONTINUE | Opcode.SETS_REGISTER | Opcode.SETS_WIDE_REGISTER), 15670aa787967e18fd782f47a0b5508271637577c30Ben Gruver INT_TO_LONG((short)0x81, "int-to-long", ReferenceType.NONE, Format.Format12x, Opcode.CAN_CONTINUE | Opcode.SETS_REGISTER | Opcode.SETS_WIDE_REGISTER), 15770aa787967e18fd782f47a0b5508271637577c30Ben Gruver INT_TO_FLOAT((short)0x82, "int-to-float", ReferenceType.NONE, Format.Format12x, Opcode.CAN_CONTINUE | Opcode.SETS_REGISTER), 15870aa787967e18fd782f47a0b5508271637577c30Ben Gruver INT_TO_DOUBLE((short)0x83, "int-to-double", ReferenceType.NONE, Format.Format12x, Opcode.CAN_CONTINUE | Opcode.SETS_REGISTER | Opcode.SETS_WIDE_REGISTER), 15970aa787967e18fd782f47a0b5508271637577c30Ben Gruver LONG_TO_INT((short)0x84, "long-to-int", ReferenceType.NONE, Format.Format12x, Opcode.CAN_CONTINUE | Opcode.SETS_REGISTER), 16070aa787967e18fd782f47a0b5508271637577c30Ben Gruver LONG_TO_FLOAT((short)0x85, "long-to-float", ReferenceType.NONE, Format.Format12x, Opcode.CAN_CONTINUE | Opcode.SETS_REGISTER), 16170aa787967e18fd782f47a0b5508271637577c30Ben Gruver LONG_TO_DOUBLE((short)0x86, "long-to-double", ReferenceType.NONE, Format.Format12x, Opcode.CAN_CONTINUE | Opcode.SETS_REGISTER | Opcode.SETS_WIDE_REGISTER), 16270aa787967e18fd782f47a0b5508271637577c30Ben Gruver FLOAT_TO_INT((short)0x87, "float-to-int", ReferenceType.NONE, Format.Format12x, Opcode.CAN_CONTINUE | Opcode.SETS_REGISTER), 16370aa787967e18fd782f47a0b5508271637577c30Ben Gruver FLOAT_TO_LONG((short)0x88, "float-to-long", ReferenceType.NONE, Format.Format12x, Opcode.CAN_CONTINUE | Opcode.SETS_REGISTER | Opcode.SETS_WIDE_REGISTER), 16470aa787967e18fd782f47a0b5508271637577c30Ben Gruver FLOAT_TO_DOUBLE((short)0x89, "float-to-double", ReferenceType.NONE, Format.Format12x, Opcode.CAN_CONTINUE | Opcode.SETS_REGISTER | Opcode.SETS_WIDE_REGISTER), 16570aa787967e18fd782f47a0b5508271637577c30Ben Gruver DOUBLE_TO_INT((short)0x8a, "double-to-int", ReferenceType.NONE, Format.Format12x, Opcode.CAN_CONTINUE | Opcode.SETS_REGISTER), 16670aa787967e18fd782f47a0b5508271637577c30Ben Gruver DOUBLE_TO_LONG((short)0x8b, "double-to-long", ReferenceType.NONE, Format.Format12x, Opcode.CAN_CONTINUE | Opcode.SETS_REGISTER | Opcode.SETS_WIDE_REGISTER), 16770aa787967e18fd782f47a0b5508271637577c30Ben Gruver DOUBLE_TO_FLOAT((short)0x8c, "double-to-float", ReferenceType.NONE, Format.Format12x, Opcode.CAN_CONTINUE | Opcode.SETS_REGISTER), 16870aa787967e18fd782f47a0b5508271637577c30Ben Gruver INT_TO_BYTE((short)0x8d, "int-to-byte", ReferenceType.NONE, Format.Format12x, Opcode.CAN_CONTINUE | Opcode.SETS_REGISTER), 16970aa787967e18fd782f47a0b5508271637577c30Ben Gruver INT_TO_CHAR((short)0x8e, "int-to-char", ReferenceType.NONE, Format.Format12x, Opcode.CAN_CONTINUE | Opcode.SETS_REGISTER), 17070aa787967e18fd782f47a0b5508271637577c30Ben Gruver INT_TO_SHORT((short)0x8f, "int-to-short", ReferenceType.NONE, Format.Format12x, Opcode.CAN_CONTINUE | Opcode.SETS_REGISTER), 17170aa787967e18fd782f47a0b5508271637577c30Ben Gruver ADD_INT((short)0x90, "add-int", ReferenceType.NONE, Format.Format23x, Opcode.CAN_CONTINUE | Opcode.SETS_REGISTER), 17270aa787967e18fd782f47a0b5508271637577c30Ben Gruver SUB_INT((short)0x91, "sub-int", ReferenceType.NONE, Format.Format23x, Opcode.CAN_CONTINUE | Opcode.SETS_REGISTER), 17370aa787967e18fd782f47a0b5508271637577c30Ben Gruver MUL_INT((short)0x92, "mul-int", ReferenceType.NONE, Format.Format23x, Opcode.CAN_CONTINUE | Opcode.SETS_REGISTER), 17470aa787967e18fd782f47a0b5508271637577c30Ben Gruver DIV_INT((short)0x93, "div-int", ReferenceType.NONE, Format.Format23x, Opcode.CAN_THROW | Opcode.CAN_CONTINUE | Opcode.SETS_REGISTER), 17570aa787967e18fd782f47a0b5508271637577c30Ben Gruver REM_INT((short)0x94, "rem-int", ReferenceType.NONE, Format.Format23x, Opcode.CAN_THROW | Opcode.CAN_CONTINUE | Opcode.SETS_REGISTER), 17670aa787967e18fd782f47a0b5508271637577c30Ben Gruver AND_INT((short)0x95, "and-int", ReferenceType.NONE, Format.Format23x, Opcode.CAN_CONTINUE | Opcode.SETS_REGISTER), 17770aa787967e18fd782f47a0b5508271637577c30Ben Gruver OR_INT((short)0x96, "or-int", ReferenceType.NONE, Format.Format23x, Opcode.CAN_CONTINUE | Opcode.SETS_REGISTER), 17870aa787967e18fd782f47a0b5508271637577c30Ben Gruver XOR_INT((short)0x97, "xor-int", ReferenceType.NONE, Format.Format23x, Opcode.CAN_CONTINUE | Opcode.SETS_REGISTER), 17970aa787967e18fd782f47a0b5508271637577c30Ben Gruver SHL_INT((short)0x98, "shl-int", ReferenceType.NONE, Format.Format23x, Opcode.CAN_CONTINUE | Opcode.SETS_REGISTER), 18070aa787967e18fd782f47a0b5508271637577c30Ben Gruver SHR_INT((short)0x99, "shr-int", ReferenceType.NONE, Format.Format23x, Opcode.CAN_CONTINUE | Opcode.SETS_REGISTER), 18170aa787967e18fd782f47a0b5508271637577c30Ben Gruver USHR_INT((short)0x9a, "ushr-int", ReferenceType.NONE, Format.Format23x, Opcode.CAN_CONTINUE | Opcode.SETS_REGISTER), 18270aa787967e18fd782f47a0b5508271637577c30Ben Gruver ADD_LONG((short)0x9b, "add-long", ReferenceType.NONE, Format.Format23x, Opcode.CAN_CONTINUE | Opcode.SETS_REGISTER | Opcode.SETS_WIDE_REGISTER), 18370aa787967e18fd782f47a0b5508271637577c30Ben Gruver SUB_LONG((short)0x9c, "sub-long", ReferenceType.NONE, Format.Format23x, Opcode.CAN_CONTINUE | Opcode.SETS_REGISTER | Opcode.SETS_WIDE_REGISTER), 18470aa787967e18fd782f47a0b5508271637577c30Ben Gruver MUL_LONG((short)0x9d, "mul-long", ReferenceType.NONE, Format.Format23x, Opcode.CAN_CONTINUE | Opcode.SETS_REGISTER | Opcode.SETS_WIDE_REGISTER), 18570aa787967e18fd782f47a0b5508271637577c30Ben Gruver DIV_LONG((short)0x9e, "div-long", ReferenceType.NONE, Format.Format23x, Opcode.CAN_THROW | Opcode.CAN_CONTINUE | Opcode.SETS_REGISTER | Opcode.SETS_WIDE_REGISTER), 18670aa787967e18fd782f47a0b5508271637577c30Ben Gruver REM_LONG((short)0x9f, "rem-long", ReferenceType.NONE, Format.Format23x, Opcode.CAN_THROW | Opcode.CAN_CONTINUE | Opcode.SETS_REGISTER | Opcode.SETS_WIDE_REGISTER), 18770aa787967e18fd782f47a0b5508271637577c30Ben Gruver AND_LONG((short)0xa0, "and-long", ReferenceType.NONE, Format.Format23x, Opcode.CAN_CONTINUE | Opcode.SETS_REGISTER | Opcode.SETS_WIDE_REGISTER), 18870aa787967e18fd782f47a0b5508271637577c30Ben Gruver OR_LONG((short)0xa1, "or-long", ReferenceType.NONE, Format.Format23x, Opcode.CAN_CONTINUE | Opcode.SETS_REGISTER | Opcode.SETS_WIDE_REGISTER), 18970aa787967e18fd782f47a0b5508271637577c30Ben Gruver XOR_LONG((short)0xa2, "xor-long", ReferenceType.NONE, Format.Format23x, Opcode.CAN_CONTINUE | Opcode.SETS_REGISTER | Opcode.SETS_WIDE_REGISTER), 19070aa787967e18fd782f47a0b5508271637577c30Ben Gruver SHL_LONG((short)0xa3, "shl-long", ReferenceType.NONE, Format.Format23x, Opcode.CAN_CONTINUE | Opcode.SETS_REGISTER | Opcode.SETS_WIDE_REGISTER), 19170aa787967e18fd782f47a0b5508271637577c30Ben Gruver SHR_LONG((short)0xa4, "shr-long", ReferenceType.NONE, Format.Format23x, Opcode.CAN_CONTINUE | Opcode.SETS_REGISTER | Opcode.SETS_WIDE_REGISTER), 19270aa787967e18fd782f47a0b5508271637577c30Ben Gruver USHR_LONG((short)0xa5, "ushr-long", ReferenceType.NONE, Format.Format23x, Opcode.CAN_CONTINUE | Opcode.SETS_REGISTER | Opcode.SETS_WIDE_REGISTER), 19370aa787967e18fd782f47a0b5508271637577c30Ben Gruver ADD_FLOAT((short)0xa6, "add-float", ReferenceType.NONE, Format.Format23x, Opcode.CAN_CONTINUE | Opcode.SETS_REGISTER), 19470aa787967e18fd782f47a0b5508271637577c30Ben Gruver SUB_FLOAT((short)0xa7, "sub-float", ReferenceType.NONE, Format.Format23x, Opcode.CAN_CONTINUE | Opcode.SETS_REGISTER), 19570aa787967e18fd782f47a0b5508271637577c30Ben Gruver MUL_FLOAT((short)0xa8, "mul-float", ReferenceType.NONE, Format.Format23x, Opcode.CAN_CONTINUE | Opcode.SETS_REGISTER), 19670aa787967e18fd782f47a0b5508271637577c30Ben Gruver DIV_FLOAT((short)0xa9, "div-float", ReferenceType.NONE, Format.Format23x, Opcode.CAN_CONTINUE | Opcode.SETS_REGISTER), 19770aa787967e18fd782f47a0b5508271637577c30Ben Gruver REM_FLOAT((short)0xaa, "rem-float", ReferenceType.NONE, Format.Format23x, Opcode.CAN_CONTINUE | Opcode.SETS_REGISTER), 19870aa787967e18fd782f47a0b5508271637577c30Ben Gruver ADD_DOUBLE((short)0xab, "add-double", ReferenceType.NONE, Format.Format23x, Opcode.CAN_CONTINUE | Opcode.SETS_REGISTER | Opcode.SETS_WIDE_REGISTER), 19970aa787967e18fd782f47a0b5508271637577c30Ben Gruver SUB_DOUBLE((short)0xac, "sub-double", ReferenceType.NONE, Format.Format23x, Opcode.CAN_CONTINUE | Opcode.SETS_REGISTER | Opcode.SETS_WIDE_REGISTER), 20070aa787967e18fd782f47a0b5508271637577c30Ben Gruver MUL_DOUBLE((short)0xad, "mul-double", ReferenceType.NONE, Format.Format23x, Opcode.CAN_CONTINUE | Opcode.SETS_REGISTER | Opcode.SETS_WIDE_REGISTER), 20170aa787967e18fd782f47a0b5508271637577c30Ben Gruver DIV_DOUBLE((short)0xae, "div-double", ReferenceType.NONE, Format.Format23x, Opcode.CAN_CONTINUE | Opcode.SETS_REGISTER | Opcode.SETS_WIDE_REGISTER), 20270aa787967e18fd782f47a0b5508271637577c30Ben Gruver REM_DOUBLE((short)0xaf, "rem-double", ReferenceType.NONE, Format.Format23x, Opcode.CAN_CONTINUE | Opcode.SETS_REGISTER | Opcode.SETS_WIDE_REGISTER), 20370aa787967e18fd782f47a0b5508271637577c30Ben Gruver ADD_INT_2ADDR((short)0xb0, "add-int/2addr", ReferenceType.NONE, Format.Format12x, Opcode.CAN_CONTINUE | Opcode.SETS_REGISTER), 20470aa787967e18fd782f47a0b5508271637577c30Ben Gruver SUB_INT_2ADDR((short)0xb1, "sub-int/2addr", ReferenceType.NONE, Format.Format12x, Opcode.CAN_CONTINUE | Opcode.SETS_REGISTER), 20570aa787967e18fd782f47a0b5508271637577c30Ben Gruver MUL_INT_2ADDR((short)0xb2, "mul-int/2addr", ReferenceType.NONE, Format.Format12x, Opcode.CAN_CONTINUE | Opcode.SETS_REGISTER), 20670aa787967e18fd782f47a0b5508271637577c30Ben Gruver DIV_INT_2ADDR((short)0xb3, "div-int/2addr", ReferenceType.NONE, Format.Format12x, Opcode.CAN_THROW | Opcode.CAN_CONTINUE | Opcode.SETS_REGISTER), 20770aa787967e18fd782f47a0b5508271637577c30Ben Gruver REM_INT_2ADDR((short)0xb4, "rem-int/2addr", ReferenceType.NONE, Format.Format12x, Opcode.CAN_THROW | Opcode.CAN_CONTINUE | Opcode.SETS_REGISTER), 20870aa787967e18fd782f47a0b5508271637577c30Ben Gruver AND_INT_2ADDR((short)0xb5, "and-int/2addr", ReferenceType.NONE, Format.Format12x, Opcode.CAN_CONTINUE | Opcode.SETS_REGISTER), 20970aa787967e18fd782f47a0b5508271637577c30Ben Gruver OR_INT_2ADDR((short)0xb6, "or-int/2addr", ReferenceType.NONE, Format.Format12x, Opcode.CAN_CONTINUE | Opcode.SETS_REGISTER), 21070aa787967e18fd782f47a0b5508271637577c30Ben Gruver XOR_INT_2ADDR((short)0xb7, "xor-int/2addr", ReferenceType.NONE, Format.Format12x, Opcode.CAN_CONTINUE | Opcode.SETS_REGISTER), 21170aa787967e18fd782f47a0b5508271637577c30Ben Gruver SHL_INT_2ADDR((short)0xb8, "shl-int/2addr", ReferenceType.NONE, Format.Format12x, Opcode.CAN_CONTINUE | Opcode.SETS_REGISTER), 21270aa787967e18fd782f47a0b5508271637577c30Ben Gruver SHR_INT_2ADDR((short)0xb9, "shr-int/2addr", ReferenceType.NONE, Format.Format12x, Opcode.CAN_CONTINUE | Opcode.SETS_REGISTER), 21370aa787967e18fd782f47a0b5508271637577c30Ben Gruver USHR_INT_2ADDR((short)0xba, "ushr-int/2addr", ReferenceType.NONE, Format.Format12x, Opcode.CAN_CONTINUE | Opcode.SETS_REGISTER), 21470aa787967e18fd782f47a0b5508271637577c30Ben Gruver ADD_LONG_2ADDR((short)0xbb, "add-long/2addr", ReferenceType.NONE, Format.Format12x, Opcode.CAN_CONTINUE | Opcode.SETS_REGISTER | Opcode.SETS_WIDE_REGISTER), 21570aa787967e18fd782f47a0b5508271637577c30Ben Gruver SUB_LONG_2ADDR((short)0xbc, "sub-long/2addr", ReferenceType.NONE, Format.Format12x, Opcode.CAN_CONTINUE | Opcode.SETS_REGISTER | Opcode.SETS_WIDE_REGISTER), 21670aa787967e18fd782f47a0b5508271637577c30Ben Gruver MUL_LONG_2ADDR((short)0xbd, "mul-long/2addr", ReferenceType.NONE, Format.Format12x, Opcode.CAN_CONTINUE | Opcode.SETS_REGISTER | Opcode.SETS_WIDE_REGISTER), 21770aa787967e18fd782f47a0b5508271637577c30Ben Gruver DIV_LONG_2ADDR((short)0xbe, "div-long/2addr", ReferenceType.NONE, Format.Format12x, Opcode.CAN_THROW | Opcode.CAN_CONTINUE | Opcode.SETS_REGISTER | Opcode.SETS_WIDE_REGISTER), 21870aa787967e18fd782f47a0b5508271637577c30Ben Gruver REM_LONG_2ADDR((short)0xbf, "rem-long/2addr", ReferenceType.NONE, Format.Format12x, Opcode.CAN_THROW | Opcode.CAN_CONTINUE | Opcode.SETS_REGISTER | Opcode.SETS_WIDE_REGISTER), 21970aa787967e18fd782f47a0b5508271637577c30Ben Gruver AND_LONG_2ADDR((short)0xc0, "and-long/2addr", ReferenceType.NONE, Format.Format12x, Opcode.CAN_CONTINUE | Opcode.SETS_REGISTER | Opcode.SETS_WIDE_REGISTER), 22070aa787967e18fd782f47a0b5508271637577c30Ben Gruver OR_LONG_2ADDR((short)0xc1, "or-long/2addr", ReferenceType.NONE, Format.Format12x, Opcode.CAN_CONTINUE | Opcode.SETS_REGISTER | Opcode.SETS_WIDE_REGISTER), 22170aa787967e18fd782f47a0b5508271637577c30Ben Gruver XOR_LONG_2ADDR((short)0xc2, "xor-long/2addr", ReferenceType.NONE, Format.Format12x, Opcode.CAN_CONTINUE | Opcode.SETS_REGISTER | Opcode.SETS_WIDE_REGISTER), 22270aa787967e18fd782f47a0b5508271637577c30Ben Gruver SHL_LONG_2ADDR((short)0xc3, "shl-long/2addr", ReferenceType.NONE, Format.Format12x, Opcode.CAN_CONTINUE | Opcode.SETS_REGISTER | Opcode.SETS_WIDE_REGISTER), 22370aa787967e18fd782f47a0b5508271637577c30Ben Gruver SHR_LONG_2ADDR((short)0xc4, "shr-long/2addr", ReferenceType.NONE, Format.Format12x, Opcode.CAN_CONTINUE | Opcode.SETS_REGISTER | Opcode.SETS_WIDE_REGISTER), 22470aa787967e18fd782f47a0b5508271637577c30Ben Gruver USHR_LONG_2ADDR((short)0xc5, "ushr-long/2addr", ReferenceType.NONE, Format.Format12x, Opcode.CAN_CONTINUE | Opcode.SETS_REGISTER | Opcode.SETS_WIDE_REGISTER), 22570aa787967e18fd782f47a0b5508271637577c30Ben Gruver ADD_FLOAT_2ADDR((short)0xc6, "add-float/2addr", ReferenceType.NONE, Format.Format12x, Opcode.CAN_CONTINUE | Opcode.SETS_REGISTER), 22670aa787967e18fd782f47a0b5508271637577c30Ben Gruver SUB_FLOAT_2ADDR((short)0xc7, "sub-float/2addr", ReferenceType.NONE, Format.Format12x, Opcode.CAN_CONTINUE | Opcode.SETS_REGISTER), 22770aa787967e18fd782f47a0b5508271637577c30Ben Gruver MUL_FLOAT_2ADDR((short)0xc8, "mul-float/2addr", ReferenceType.NONE, Format.Format12x, Opcode.CAN_CONTINUE | Opcode.SETS_REGISTER), 22870aa787967e18fd782f47a0b5508271637577c30Ben Gruver DIV_FLOAT_2ADDR((short)0xc9, "div-float/2addr", ReferenceType.NONE, Format.Format12x, Opcode.CAN_CONTINUE | Opcode.SETS_REGISTER), 22970aa787967e18fd782f47a0b5508271637577c30Ben Gruver REM_FLOAT_2ADDR((short)0xca, "rem-float/2addr", ReferenceType.NONE, Format.Format12x, Opcode.CAN_CONTINUE | Opcode.SETS_REGISTER), 23070aa787967e18fd782f47a0b5508271637577c30Ben Gruver ADD_DOUBLE_2ADDR((short)0xcb, "add-double/2addr", ReferenceType.NONE, Format.Format12x, Opcode.CAN_CONTINUE | Opcode.SETS_REGISTER | Opcode.SETS_WIDE_REGISTER), 23170aa787967e18fd782f47a0b5508271637577c30Ben Gruver SUB_DOUBLE_2ADDR((short)0xcc, "sub-double/2addr", ReferenceType.NONE, Format.Format12x, Opcode.CAN_CONTINUE | Opcode.SETS_REGISTER | Opcode.SETS_WIDE_REGISTER), 23270aa787967e18fd782f47a0b5508271637577c30Ben Gruver MUL_DOUBLE_2ADDR((short)0xcd, "mul-double/2addr", ReferenceType.NONE, Format.Format12x, Opcode.CAN_CONTINUE | Opcode.SETS_REGISTER | Opcode.SETS_WIDE_REGISTER), 23370aa787967e18fd782f47a0b5508271637577c30Ben Gruver DIV_DOUBLE_2ADDR((short)0xce, "div-double/2addr", ReferenceType.NONE, Format.Format12x, Opcode.CAN_CONTINUE | Opcode.SETS_REGISTER | Opcode.SETS_WIDE_REGISTER), 23470aa787967e18fd782f47a0b5508271637577c30Ben Gruver REM_DOUBLE_2ADDR((short)0xcf, "rem-double/2addr", ReferenceType.NONE, Format.Format12x, Opcode.CAN_CONTINUE | Opcode.SETS_REGISTER | Opcode.SETS_WIDE_REGISTER), 23570aa787967e18fd782f47a0b5508271637577c30Ben Gruver ADD_INT_LIT16((short)0xd0, "add-int/lit16", ReferenceType.NONE, Format.Format22s, Opcode.CAN_CONTINUE | Opcode.SETS_REGISTER), 23670aa787967e18fd782f47a0b5508271637577c30Ben Gruver RSUB_INT((short)0xd1, "rsub-int", ReferenceType.NONE, Format.Format22s, Opcode.CAN_CONTINUE | Opcode.SETS_REGISTER), 23770aa787967e18fd782f47a0b5508271637577c30Ben Gruver MUL_INT_LIT16((short)0xd2, "mul-int/lit16", ReferenceType.NONE, Format.Format22s, Opcode.CAN_CONTINUE | Opcode.SETS_REGISTER), 23870aa787967e18fd782f47a0b5508271637577c30Ben Gruver DIV_INT_LIT16((short)0xd3, "div-int/lit16", ReferenceType.NONE, Format.Format22s, Opcode.CAN_THROW | Opcode.CAN_CONTINUE | Opcode.SETS_REGISTER), 23970aa787967e18fd782f47a0b5508271637577c30Ben Gruver REM_INT_LIT16((short)0xd4, "rem-int/lit16", ReferenceType.NONE, Format.Format22s, Opcode.CAN_THROW | Opcode.CAN_CONTINUE | Opcode.SETS_REGISTER), 24070aa787967e18fd782f47a0b5508271637577c30Ben Gruver AND_INT_LIT16((short)0xd5, "and-int/lit16", ReferenceType.NONE, Format.Format22s, Opcode.CAN_CONTINUE | Opcode.SETS_REGISTER), 24170aa787967e18fd782f47a0b5508271637577c30Ben Gruver OR_INT_LIT16((short)0xd6, "or-int/lit16", ReferenceType.NONE, Format.Format22s, Opcode.CAN_CONTINUE | Opcode.SETS_REGISTER), 24270aa787967e18fd782f47a0b5508271637577c30Ben Gruver XOR_INT_LIT16((short)0xd7, "xor-int/lit16", ReferenceType.NONE, Format.Format22s, Opcode.CAN_CONTINUE | Opcode.SETS_REGISTER), 24370aa787967e18fd782f47a0b5508271637577c30Ben Gruver ADD_INT_LIT8((short)0xd8, "add-int/lit8", ReferenceType.NONE, Format.Format22b, Opcode.CAN_CONTINUE | Opcode.SETS_REGISTER), 24470aa787967e18fd782f47a0b5508271637577c30Ben Gruver RSUB_INT_LIT8((short)0xd9, "rsub-int/lit8", ReferenceType.NONE, Format.Format22b, Opcode.CAN_CONTINUE | Opcode.SETS_REGISTER), 24570aa787967e18fd782f47a0b5508271637577c30Ben Gruver MUL_INT_LIT8((short)0xda, "mul-int/lit8", ReferenceType.NONE, Format.Format22b, Opcode.CAN_CONTINUE | Opcode.SETS_REGISTER), 24670aa787967e18fd782f47a0b5508271637577c30Ben Gruver DIV_INT_LIT8((short)0xdb, "div-int/lit8", ReferenceType.NONE, Format.Format22b, Opcode.CAN_THROW | Opcode.CAN_CONTINUE | Opcode.SETS_REGISTER), 24770aa787967e18fd782f47a0b5508271637577c30Ben Gruver REM_INT_LIT8((short)0xdc, "rem-int/lit8", ReferenceType.NONE, Format.Format22b, Opcode.CAN_THROW | Opcode.CAN_CONTINUE | Opcode.SETS_REGISTER), 24870aa787967e18fd782f47a0b5508271637577c30Ben Gruver AND_INT_LIT8((short)0xdd, "and-int/lit8", ReferenceType.NONE, Format.Format22b, Opcode.CAN_CONTINUE | Opcode.SETS_REGISTER), 24970aa787967e18fd782f47a0b5508271637577c30Ben Gruver OR_INT_LIT8((short)0xde, "or-int/lit8", ReferenceType.NONE, Format.Format22b, Opcode.CAN_CONTINUE | Opcode.SETS_REGISTER), 25070aa787967e18fd782f47a0b5508271637577c30Ben Gruver XOR_INT_LIT8((short)0xdf, "xor-int/lit8", ReferenceType.NONE, Format.Format22b, Opcode.CAN_CONTINUE | Opcode.SETS_REGISTER), 25170aa787967e18fd782f47a0b5508271637577c30Ben Gruver SHL_INT_LIT8((short)0xe0, "shl-int/lit8", ReferenceType.NONE, Format.Format22b, Opcode.CAN_CONTINUE | Opcode.SETS_REGISTER), 25270aa787967e18fd782f47a0b5508271637577c30Ben Gruver SHR_INT_LIT8((short)0xe1, "shr-int/lit8", ReferenceType.NONE, Format.Format22b, Opcode.CAN_CONTINUE | Opcode.SETS_REGISTER), 25370aa787967e18fd782f47a0b5508271637577c30Ben Gruver USHR_INT_LIT8((short)0xe2, "ushr-int/lit8", ReferenceType.NONE, Format.Format22b, Opcode.CAN_CONTINUE | Opcode.SETS_REGISTER), 254c05d8d40e0160037cd2294dbcd82ba3101d9a834Ben Gruver 25583f77f51aa888998486c0c9ad693047480b060b0Ben Gruver IGET_VOLATILE((short)0xe3, "iget-volatile", minApi(9), ReferenceType.FIELD, Format.Format22c, Opcode.ODEX_ONLY | Opcode.ODEXED_INSTANCE_VOLATILE | Opcode.CAN_THROW | Opcode.CAN_CONTINUE | Opcode.SETS_REGISTER), 25683f77f51aa888998486c0c9ad693047480b060b0Ben Gruver IPUT_VOLATILE((short)0xe4, "iput-volatile", minApi(9), ReferenceType.FIELD, Format.Format22c, Opcode.ODEX_ONLY | Opcode.ODEXED_INSTANCE_VOLATILE | Opcode.CAN_THROW | Opcode.CAN_CONTINUE), 25783f77f51aa888998486c0c9ad693047480b060b0Ben Gruver SGET_VOLATILE((short)0xe5, "sget-volatile", minApi(9), ReferenceType.FIELD, Format.Format21c, Opcode.ODEX_ONLY | Opcode.ODEXED_STATIC_VOLATILE | Opcode.CAN_THROW | Opcode.CAN_CONTINUE | Opcode.SETS_REGISTER), 25883f77f51aa888998486c0c9ad693047480b060b0Ben Gruver SPUT_VOLATILE((short)0xe6, "sput-volatile", minApi(9), ReferenceType.FIELD, Format.Format21c, Opcode.ODEX_ONLY | Opcode.ODEXED_STATIC_VOLATILE | Opcode.CAN_THROW | Opcode.CAN_CONTINUE), 25983f77f51aa888998486c0c9ad693047480b060b0Ben Gruver IGET_OBJECT_VOLATILE((short)0xe7, "iget-object-volatile", minApi(9), ReferenceType.FIELD, Format.Format22c, Opcode.ODEX_ONLY | Opcode.ODEXED_INSTANCE_VOLATILE | Opcode.CAN_THROW | Opcode.CAN_CONTINUE | Opcode.SETS_REGISTER), 26083f77f51aa888998486c0c9ad693047480b060b0Ben Gruver IGET_WIDE_VOLATILE((short)0xe8, "iget-wide-volatile", minApi(9), ReferenceType.FIELD, Format.Format22c, Opcode.ODEX_ONLY | Opcode.ODEXED_INSTANCE_VOLATILE | Opcode.CAN_THROW | Opcode.CAN_CONTINUE | Opcode.SETS_REGISTER | Opcode.SETS_WIDE_REGISTER), 26183f77f51aa888998486c0c9ad693047480b060b0Ben Gruver IPUT_WIDE_VOLATILE((short)0xe9, "iput-wide-volatile", minApi(9), ReferenceType.FIELD, Format.Format22c, Opcode.ODEX_ONLY | Opcode.ODEXED_INSTANCE_VOLATILE | Opcode.CAN_THROW | Opcode.CAN_CONTINUE), 26283f77f51aa888998486c0c9ad693047480b060b0Ben Gruver SGET_WIDE_VOLATILE((short)0xea, "sget-wide-volatile", minApi(9), ReferenceType.FIELD, Format.Format21c, Opcode.ODEX_ONLY | Opcode.ODEXED_STATIC_VOLATILE | Opcode.CAN_THROW | Opcode.CAN_CONTINUE | Opcode.SETS_REGISTER | Opcode.SETS_WIDE_REGISTER), 26383f77f51aa888998486c0c9ad693047480b060b0Ben Gruver SPUT_WIDE_VOLATILE((short)0xeb, "sput-wide-volatile", minApi(9), ReferenceType.FIELD, Format.Format21c, Opcode.ODEX_ONLY | Opcode.ODEXED_STATIC_VOLATILE | Opcode.CAN_THROW | Opcode.CAN_CONTINUE), 26483f77f51aa888998486c0c9ad693047480b060b0Ben Gruver 26583f77f51aa888998486c0c9ad693047480b060b0Ben Gruver THROW_VERIFICATION_ERROR((short)0xed, "throw-verification-error", minApi(5), ReferenceType.NONE, Format.Format20bc, Opcode.ODEX_ONLY | Opcode.CAN_THROW), 26670aa787967e18fd782f47a0b5508271637577c30Ben Gruver EXECUTE_INLINE((short)0xee, "execute-inline", ReferenceType.NONE, Format.Format35mi, Opcode.ODEX_ONLY | Opcode.CAN_THROW | Opcode.CAN_CONTINUE | Opcode.SETS_RESULT), 26783f77f51aa888998486c0c9ad693047480b060b0Ben Gruver EXECUTE_INLINE_RANGE((short)0xef, "execute-inline/range", minApi(8), ReferenceType.NONE, Format.Format3rmi, Opcode.ODEX_ONLY | Opcode.CAN_THROW | Opcode.CAN_CONTINUE | Opcode.SETS_RESULT), 26883f77f51aa888998486c0c9ad693047480b060b0Ben Gruver INVOKE_DIRECT_EMPTY((short)0xf0, "invoke-direct-empty", maxApi(13), ReferenceType.METHOD, Format.Format35c, Opcode.ODEX_ONLY | Opcode.CAN_THROW | Opcode.CAN_CONTINUE | Opcode.SETS_RESULT | Opcode.CAN_INITIALIZE_REFERENCE), 26983f77f51aa888998486c0c9ad693047480b060b0Ben Gruver INVOKE_OBJECT_INIT_RANGE((short)0xf0, "invoke-object-init/range", minApi(14), ReferenceType.METHOD, Format.Format3rc, Opcode.ODEX_ONLY | Opcode.CAN_THROW | Opcode.CAN_CONTINUE | Opcode.SETS_RESULT | Opcode.CAN_INITIALIZE_REFERENCE), 27083f77f51aa888998486c0c9ad693047480b060b0Ben Gruver RETURN_VOID_BARRIER((short)0xf1, "return-void-barrier", minApi(11), ReferenceType.NONE, Format.Format10x, Opcode.ODEX_ONLY), 27170aa787967e18fd782f47a0b5508271637577c30Ben Gruver IGET_QUICK((short)0xf2, "iget-quick", ReferenceType.NONE, Format.Format22cs, Opcode.ODEX_ONLY | Opcode.ODEXED_INSTANCE_QUICK | Opcode.CAN_THROW | Opcode.CAN_CONTINUE | Opcode.SETS_REGISTER), 27270aa787967e18fd782f47a0b5508271637577c30Ben Gruver IGET_WIDE_QUICK((short)0xf3, "iget-wide-quick", ReferenceType.NONE, Format.Format22cs, Opcode.ODEX_ONLY | Opcode.ODEXED_INSTANCE_QUICK | Opcode.CAN_THROW | Opcode.CAN_CONTINUE | Opcode.SETS_REGISTER | Opcode.SETS_WIDE_REGISTER), 27370aa787967e18fd782f47a0b5508271637577c30Ben Gruver IGET_OBJECT_QUICK((short)0xf4, "iget-object-quick", ReferenceType.NONE, Format.Format22cs, Opcode.ODEX_ONLY | Opcode.ODEXED_INSTANCE_QUICK | Opcode.CAN_THROW | Opcode.CAN_CONTINUE | Opcode.SETS_REGISTER), 27470aa787967e18fd782f47a0b5508271637577c30Ben Gruver IPUT_QUICK((short)0xf5, "iput-quick", ReferenceType.NONE, Format.Format22cs, Opcode.ODEX_ONLY | Opcode.ODEXED_INSTANCE_QUICK | Opcode.CAN_THROW | Opcode.CAN_CONTINUE), 27570aa787967e18fd782f47a0b5508271637577c30Ben Gruver IPUT_WIDE_QUICK((short)0xf6, "iput-wide-quick", ReferenceType.NONE, Format.Format22cs, Opcode.ODEX_ONLY | Opcode.ODEXED_INSTANCE_QUICK | Opcode.CAN_THROW | Opcode.CAN_CONTINUE), 27670aa787967e18fd782f47a0b5508271637577c30Ben Gruver IPUT_OBJECT_QUICK((short)0xf7, "iput-object-quick", ReferenceType.NONE, Format.Format22cs, Opcode.ODEX_ONLY | Opcode.ODEXED_INSTANCE_QUICK | Opcode.CAN_THROW | Opcode.CAN_CONTINUE), 27770aa787967e18fd782f47a0b5508271637577c30Ben Gruver INVOKE_VIRTUAL_QUICK((short)0xf8, "invoke-virtual-quick", ReferenceType.NONE, Format.Format35ms, Opcode.ODEX_ONLY | Opcode.CAN_THROW | Opcode.CAN_CONTINUE | Opcode.SETS_RESULT), 27870aa787967e18fd782f47a0b5508271637577c30Ben Gruver INVOKE_VIRTUAL_QUICK_RANGE((short)0xf9, "invoke-virtual-quick/range", ReferenceType.NONE, Format.Format3rms, Opcode.ODEX_ONLY | Opcode.CAN_THROW | Opcode.CAN_CONTINUE | Opcode.SETS_RESULT), 27970aa787967e18fd782f47a0b5508271637577c30Ben Gruver INVOKE_SUPER_QUICK((short)0xfa, "invoke-super-quick", ReferenceType.NONE, Format.Format35ms, Opcode.ODEX_ONLY | Opcode.CAN_THROW | Opcode.CAN_CONTINUE | Opcode.SETS_RESULT), 28070aa787967e18fd782f47a0b5508271637577c30Ben Gruver INVOKE_SUPER_QUICK_RANGE((short)0xfb, "invoke-super-quick/range", ReferenceType.NONE, Format.Format3rms, Opcode.ODEX_ONLY | Opcode.CAN_THROW | Opcode.CAN_CONTINUE | Opcode.SETS_RESULT), 281c05d8d40e0160037cd2294dbcd82ba3101d9a834Ben Gruver 28283f77f51aa888998486c0c9ad693047480b060b0Ben Gruver IPUT_OBJECT_VOLATILE((short)0xfc, "iput-object-volatile", minApi(9), ReferenceType.FIELD, Format.Format22c, Opcode.ODEX_ONLY | Opcode.ODEXED_INSTANCE_VOLATILE | Opcode.CAN_THROW | Opcode.CAN_CONTINUE), 28383f77f51aa888998486c0c9ad693047480b060b0Ben Gruver SGET_OBJECT_VOLATILE((short)0xfd, "sget-object-volatile", minApi(9), ReferenceType.FIELD, Format.Format21c, Opcode.ODEX_ONLY | Opcode.ODEXED_STATIC_VOLATILE | Opcode.CAN_THROW | Opcode.CAN_CONTINUE | Opcode.SETS_REGISTER), 28483f77f51aa888998486c0c9ad693047480b060b0Ben Gruver SPUT_OBJECT_VOLATILE((short)0xfe, "sput-object-volatile", minApi(9), ReferenceType.FIELD, Format.Format21c, Opcode.ODEX_ONLY | Opcode.ODEXED_STATIC_VOLATILE | Opcode.CAN_THROW | Opcode.CAN_CONTINUE), 285c307c1887d0c57e2213d5146cedec2307251e9faBen Gruver 286c307c1887d0c57e2213d5146cedec2307251e9faBen Gruver PACKED_SWITCH_PAYLOAD((short)0x100, "packed-switch-payload", ReferenceType.NONE, Format.PackedSwitchPayload, 0), 287c307c1887d0c57e2213d5146cedec2307251e9faBen Gruver SPARSE_SWITCH_PAYLOAD((short)0x200, "sparse-switch-payload", ReferenceType.NONE, Format.SparseSwitchPayload, 0), 288c307c1887d0c57e2213d5146cedec2307251e9faBen Gruver ARRAY_PAYLOAD((short)0x300, "array-payload", ReferenceType.NONE, Format.ArrayPayload, 0); 289c05d8d40e0160037cd2294dbcd82ba3101d9a834Ben Gruver 290c05d8d40e0160037cd2294dbcd82ba3101d9a834Ben Gruver //if the instruction can throw an exception 291c05d8d40e0160037cd2294dbcd82ba3101d9a834Ben Gruver public static final int CAN_THROW = 0x1; 292c05d8d40e0160037cd2294dbcd82ba3101d9a834Ben Gruver //if the instruction is an odex only instruction 293c05d8d40e0160037cd2294dbcd82ba3101d9a834Ben Gruver public static final int ODEX_ONLY = 0x2; 294c05d8d40e0160037cd2294dbcd82ba3101d9a834Ben Gruver //if execution can continue to the next instruction 295c05d8d40e0160037cd2294dbcd82ba3101d9a834Ben Gruver public static final int CAN_CONTINUE = 0x4; 296c05d8d40e0160037cd2294dbcd82ba3101d9a834Ben Gruver //if the instruction sets the "hidden" result register 297c05d8d40e0160037cd2294dbcd82ba3101d9a834Ben Gruver public static final int SETS_RESULT = 0x8; 298c05d8d40e0160037cd2294dbcd82ba3101d9a834Ben Gruver //if the instruction sets the value of it's first register 299c05d8d40e0160037cd2294dbcd82ba3101d9a834Ben Gruver public static final int SETS_REGISTER = 0x10; 300c05d8d40e0160037cd2294dbcd82ba3101d9a834Ben Gruver //if the instruction sets the value of it's first register to a wide type 301c05d8d40e0160037cd2294dbcd82ba3101d9a834Ben Gruver public static final int SETS_WIDE_REGISTER = 0x20; 302c05d8d40e0160037cd2294dbcd82ba3101d9a834Ben Gruver //if the instruction is an odexed iget-quick/iput-quick instruction 303c05d8d40e0160037cd2294dbcd82ba3101d9a834Ben Gruver public static final int ODEXED_INSTANCE_QUICK = 0x40; 304c05d8d40e0160037cd2294dbcd82ba3101d9a834Ben Gruver //if the instruction is an odexed iget-volatile/iput-volatile instruction 305c05d8d40e0160037cd2294dbcd82ba3101d9a834Ben Gruver public static final int ODEXED_INSTANCE_VOLATILE = 0x80; 306c05d8d40e0160037cd2294dbcd82ba3101d9a834Ben Gruver //if the instruction is an odexed sget-volatile/sput-volatile instruction 307c05d8d40e0160037cd2294dbcd82ba3101d9a834Ben Gruver public static final int ODEXED_STATIC_VOLATILE = 0x100; 308c05d8d40e0160037cd2294dbcd82ba3101d9a834Ben Gruver //if the instruction is a jumbo instruction 309c05d8d40e0160037cd2294dbcd82ba3101d9a834Ben Gruver public static final int JUMBO_OPCODE = 0x200; 310c05d8d40e0160037cd2294dbcd82ba3101d9a834Ben Gruver //if the instruction can initialize an uninitialized object reference 311c05d8d40e0160037cd2294dbcd82ba3101d9a834Ben Gruver public static final int CAN_INITIALIZE_REFERENCE = 0x400; 312c05d8d40e0160037cd2294dbcd82ba3101d9a834Ben Gruver 31383f77f51aa888998486c0c9ad693047480b060b0Ben Gruver private static final int ALL_APIS = 0xFFFF0000; 314c05d8d40e0160037cd2294dbcd82ba3101d9a834Ben Gruver 31583f77f51aa888998486c0c9ad693047480b060b0Ben Gruver private static int minApi(int api) { 31683f77f51aa888998486c0c9ad693047480b060b0Ben Gruver return 0xFFFF0000 | (api & 0xFFFF); 317c05d8d40e0160037cd2294dbcd82ba3101d9a834Ben Gruver } 318c05d8d40e0160037cd2294dbcd82ba3101d9a834Ben Gruver 31983f77f51aa888998486c0c9ad693047480b060b0Ben Gruver private static int maxApi(int api) { 32001cfa02bfefe2383ef0585433610990b3c0b1f75Ben Gruver return api << 16; 321c05d8d40e0160037cd2294dbcd82ba3101d9a834Ben Gruver } 322c05d8d40e0160037cd2294dbcd82ba3101d9a834Ben Gruver 323c05d8d40e0160037cd2294dbcd82ba3101d9a834Ben Gruver public final short value; 324c05d8d40e0160037cd2294dbcd82ba3101d9a834Ben Gruver public final String name; 32583f77f51aa888998486c0c9ad693047480b060b0Ben Gruver // high 16-bits is the max api, low 16-bits is the min api 32683f77f51aa888998486c0c9ad693047480b060b0Ben Gruver public final int apiConstraints; 327c05d8d40e0160037cd2294dbcd82ba3101d9a834Ben Gruver public final int referenceType; 328c05d8d40e0160037cd2294dbcd82ba3101d9a834Ben Gruver public final Format format; 329c05d8d40e0160037cd2294dbcd82ba3101d9a834Ben Gruver public final int flags; 330c05d8d40e0160037cd2294dbcd82ba3101d9a834Ben Gruver 331c05d8d40e0160037cd2294dbcd82ba3101d9a834Ben Gruver Opcode(short opcodeValue, String opcodeName, int referenceType, Format format) { 33283f77f51aa888998486c0c9ad693047480b060b0Ben Gruver this(opcodeValue, opcodeName, ALL_APIS, referenceType, format, 0, (short)-1); 333c05d8d40e0160037cd2294dbcd82ba3101d9a834Ben Gruver } 334c05d8d40e0160037cd2294dbcd82ba3101d9a834Ben Gruver 335c05d8d40e0160037cd2294dbcd82ba3101d9a834Ben Gruver Opcode(short opcodeValue, String opcodeName, int referenceType, Format format, int flags) { 33683f77f51aa888998486c0c9ad693047480b060b0Ben Gruver this(opcodeValue, opcodeName, ALL_APIS, referenceType, format, flags, (short)-1); 337c05d8d40e0160037cd2294dbcd82ba3101d9a834Ben Gruver } 338c05d8d40e0160037cd2294dbcd82ba3101d9a834Ben Gruver 339c05d8d40e0160037cd2294dbcd82ba3101d9a834Ben Gruver Opcode(short opcodeValue, String opcodeName, int referenceType, Format format, int flags, short jumboOpcodeValue) { 34083f77f51aa888998486c0c9ad693047480b060b0Ben Gruver this(opcodeValue, opcodeName, ALL_APIS, referenceType, format, flags, jumboOpcodeValue); 34183f77f51aa888998486c0c9ad693047480b060b0Ben Gruver } 34283f77f51aa888998486c0c9ad693047480b060b0Ben Gruver 34383f77f51aa888998486c0c9ad693047480b060b0Ben Gruver Opcode(short opcodeValue, String opcodeName, int apiConstraints, int referenceType, Format format) { 34483f77f51aa888998486c0c9ad693047480b060b0Ben Gruver this(opcodeValue, opcodeName, apiConstraints, referenceType, format, 0, (short)-1); 34583f77f51aa888998486c0c9ad693047480b060b0Ben Gruver } 34683f77f51aa888998486c0c9ad693047480b060b0Ben Gruver 34783f77f51aa888998486c0c9ad693047480b060b0Ben Gruver Opcode(short opcodeValue, String opcodeName, int apiConstraints, int referenceType, Format format, int flags) { 34883f77f51aa888998486c0c9ad693047480b060b0Ben Gruver this(opcodeValue, opcodeName, apiConstraints, referenceType, format, flags, (short)-1); 34983f77f51aa888998486c0c9ad693047480b060b0Ben Gruver } 35083f77f51aa888998486c0c9ad693047480b060b0Ben Gruver 35183f77f51aa888998486c0c9ad693047480b060b0Ben Gruver Opcode(short opcodeValue, String opcodeName, int apiConstraints, int referenceType, Format format, int flags, 35283f77f51aa888998486c0c9ad693047480b060b0Ben Gruver short jumboOpcodeValue) { 353c05d8d40e0160037cd2294dbcd82ba3101d9a834Ben Gruver this.value = opcodeValue; 354c05d8d40e0160037cd2294dbcd82ba3101d9a834Ben Gruver this.name = opcodeName; 35583f77f51aa888998486c0c9ad693047480b060b0Ben Gruver this.apiConstraints = apiConstraints; 356c05d8d40e0160037cd2294dbcd82ba3101d9a834Ben Gruver this.referenceType = referenceType; 357c05d8d40e0160037cd2294dbcd82ba3101d9a834Ben Gruver this.format = format; 358c05d8d40e0160037cd2294dbcd82ba3101d9a834Ben Gruver this.flags = flags; 35983f77f51aa888998486c0c9ad693047480b060b0Ben Gruver // TODO: implement jumbo opcodes for dexlib2 and uncomment 36083f77f51aa888998486c0c9ad693047480b060b0Ben Gruver // this.jumboOpcode = jumboOpcodeValue; 36183f77f51aa888998486c0c9ad693047480b060b0Ben Gruver } 36283f77f51aa888998486c0c9ad693047480b060b0Ben Gruver 36383f77f51aa888998486c0c9ad693047480b060b0Ben Gruver /** 36483f77f51aa888998486c0c9ad693047480b060b0Ben Gruver * @return the minimum api level that can use this opcode (inclusive) 36583f77f51aa888998486c0c9ad693047480b060b0Ben Gruver */ 36683f77f51aa888998486c0c9ad693047480b060b0Ben Gruver public int getMinApi() { 36783f77f51aa888998486c0c9ad693047480b060b0Ben Gruver return apiConstraints & 0xFFFF; 36883f77f51aa888998486c0c9ad693047480b060b0Ben Gruver } 36983f77f51aa888998486c0c9ad693047480b060b0Ben Gruver 37083f77f51aa888998486c0c9ad693047480b060b0Ben Gruver /** 37183f77f51aa888998486c0c9ad693047480b060b0Ben Gruver * @return the maximum api level that can to use this opcode (inclusive) 37283f77f51aa888998486c0c9ad693047480b060b0Ben Gruver */ 37383f77f51aa888998486c0c9ad693047480b060b0Ben Gruver public int getMaxApi() { 37483f77f51aa888998486c0c9ad693047480b060b0Ben Gruver return apiConstraints >>> 16; 375c05d8d40e0160037cd2294dbcd82ba3101d9a834Ben Gruver } 376c05d8d40e0160037cd2294dbcd82ba3101d9a834Ben Gruver 377c05d8d40e0160037cd2294dbcd82ba3101d9a834Ben Gruver public final boolean canThrow() { 378c05d8d40e0160037cd2294dbcd82ba3101d9a834Ben Gruver return (flags & CAN_THROW) != 0; 379c05d8d40e0160037cd2294dbcd82ba3101d9a834Ben Gruver } 380c05d8d40e0160037cd2294dbcd82ba3101d9a834Ben Gruver 381c05d8d40e0160037cd2294dbcd82ba3101d9a834Ben Gruver public final boolean odexOnly() { 382c05d8d40e0160037cd2294dbcd82ba3101d9a834Ben Gruver return (flags & ODEX_ONLY) != 0; 383c05d8d40e0160037cd2294dbcd82ba3101d9a834Ben Gruver } 384c05d8d40e0160037cd2294dbcd82ba3101d9a834Ben Gruver 385c05d8d40e0160037cd2294dbcd82ba3101d9a834Ben Gruver public final boolean canContinue() { 386c05d8d40e0160037cd2294dbcd82ba3101d9a834Ben Gruver return (flags & CAN_CONTINUE) != 0; 387c05d8d40e0160037cd2294dbcd82ba3101d9a834Ben Gruver } 388c05d8d40e0160037cd2294dbcd82ba3101d9a834Ben Gruver 389c05d8d40e0160037cd2294dbcd82ba3101d9a834Ben Gruver public final boolean setsResult() { 390c05d8d40e0160037cd2294dbcd82ba3101d9a834Ben Gruver return (flags & SETS_RESULT) != 0; 391c05d8d40e0160037cd2294dbcd82ba3101d9a834Ben Gruver } 392c05d8d40e0160037cd2294dbcd82ba3101d9a834Ben Gruver 393c05d8d40e0160037cd2294dbcd82ba3101d9a834Ben Gruver public final boolean setsRegister() { 394c05d8d40e0160037cd2294dbcd82ba3101d9a834Ben Gruver return (flags & SETS_REGISTER) != 0; 395c05d8d40e0160037cd2294dbcd82ba3101d9a834Ben Gruver } 396c05d8d40e0160037cd2294dbcd82ba3101d9a834Ben Gruver 397c05d8d40e0160037cd2294dbcd82ba3101d9a834Ben Gruver public final boolean setsWideRegister() { 398c05d8d40e0160037cd2294dbcd82ba3101d9a834Ben Gruver return (flags & SETS_WIDE_REGISTER) != 0; 399c05d8d40e0160037cd2294dbcd82ba3101d9a834Ben Gruver } 400c05d8d40e0160037cd2294dbcd82ba3101d9a834Ben Gruver 401c05d8d40e0160037cd2294dbcd82ba3101d9a834Ben Gruver public final boolean isOdexedInstanceQuick() { 402c05d8d40e0160037cd2294dbcd82ba3101d9a834Ben Gruver return (flags & ODEXED_INSTANCE_QUICK) != 0; 403c05d8d40e0160037cd2294dbcd82ba3101d9a834Ben Gruver } 404c05d8d40e0160037cd2294dbcd82ba3101d9a834Ben Gruver 405c05d8d40e0160037cd2294dbcd82ba3101d9a834Ben Gruver public final boolean isOdexedInstanceVolatile() { 406c05d8d40e0160037cd2294dbcd82ba3101d9a834Ben Gruver return (flags & ODEXED_INSTANCE_VOLATILE) != 0; 407c05d8d40e0160037cd2294dbcd82ba3101d9a834Ben Gruver } 408c05d8d40e0160037cd2294dbcd82ba3101d9a834Ben Gruver 409c05d8d40e0160037cd2294dbcd82ba3101d9a834Ben Gruver public final boolean isOdexedStaticVolatile() { 410c05d8d40e0160037cd2294dbcd82ba3101d9a834Ben Gruver return (flags & ODEXED_STATIC_VOLATILE) != 0; 411c05d8d40e0160037cd2294dbcd82ba3101d9a834Ben Gruver } 412c05d8d40e0160037cd2294dbcd82ba3101d9a834Ben Gruver 413c05d8d40e0160037cd2294dbcd82ba3101d9a834Ben Gruver public final boolean isJumboOpcode() { 414c05d8d40e0160037cd2294dbcd82ba3101d9a834Ben Gruver return (flags & JUMBO_OPCODE) != 0; 415c05d8d40e0160037cd2294dbcd82ba3101d9a834Ben Gruver } 416c05d8d40e0160037cd2294dbcd82ba3101d9a834Ben Gruver 417c05d8d40e0160037cd2294dbcd82ba3101d9a834Ben Gruver public final boolean canInitializeReference() { 418c05d8d40e0160037cd2294dbcd82ba3101d9a834Ben Gruver return (flags & CAN_INITIALIZE_REFERENCE) != 0; 419c05d8d40e0160037cd2294dbcd82ba3101d9a834Ben Gruver } 420c05d8d40e0160037cd2294dbcd82ba3101d9a834Ben Gruver} 421