# Copyright (C) 2007 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. # Bytecode definition file # # Columns are: # hex for opcode # format # has result register (y/n) # opcode name 00 10x n nop 01 12x y move 02 22x y move/from16 03 32x y move/16 04 12x y move-wide 05 22x y move-wide/from16 06 32x y move-wide/16 07 12x y move-object 08 22x y move-object/from16 09 32x y move-object/16 0a 11x y move-result 0b 11x y move-result-wide 0c 11x y move-result-object 0d 11x y move-exception 0e 10x n return-void 0f 11x n return 10 11x n return-wide 11 11x n return-object 12 11n y const/4 13 21s y const/16 14 31i y const 15 21h y const/high16 16 21s y const-wide/16 17 31i y const-wide/32 18 51l y const-wide 19 21h y const-wide/high16 1a 21c y const-string 1b 31c y const-string/jumbo 1c 21c y const-class 1d 11x n monitor-enter 1e 11x n monitor-exit 1f 21c y check-cast 20 22c y instance-of 21 12x y array-length 22 21c y new-instance 23 22c y new-array 24 35c n filled-new-array 25 3rc n filled-new-array/range 26 31t n fill-array-data 27 11x n throw 28 10t n goto 29 20t n goto/16 2a 30t n goto/32 2b 31t n packed-switch 2c 31t n sparse-switch 2d 23x y cmpl-float 2e 23x y cmpg-float 2f 23x y cmpl-double 30 23x y cmpg-double 31 23x y cmp-long 32 22t n if-eq 33 22t n if-ne 34 22t n if-lt 35 22t n if-ge 36 22t n if-gt 37 22t n if-le 38 21t n if-eqz 39 21t n if-nez 3a 21t n if-ltz 3b 21t n if-gez 3c 21t n if-gtz 3d 21t n if-lez 3e 10x n unused-3e 3f 10x n unused-3f 40 10x n unused-40 41 10x n unused-41 42 10x n unused-42 43 10x n unused-43 44 23x y aget 45 23x y aget-wide 46 23x y aget-object 47 23x y aget-boolean 48 23x y aget-byte 49 23x y aget-char 4a 23x y aget-short 4b 23x n aput 4c 23x n aput-wide 4d 23x n aput-object 4e 23x n aput-boolean 4f 23x n aput-byte 50 23x n aput-char 51 23x n aput-short 52 22c y iget 53 22c y iget-wide 54 22c y iget-object 55 22c y iget-boolean 56 22c y iget-byte 57 22c y iget-char 58 22c y iget-short 59 22c n iput 5a 22c n iput-wide 5b 22c n iput-object 5c 22c n iput-boolean 5d 22c n iput-byte 5e 22c n iput-char 5f 22c n iput-short 60 21c y sget 61 21c y sget-wide 62 21c y sget-object 63 21c y sget-boolean 64 21c y sget-byte 65 21c y sget-char 66 21c y sget-short 67 21c n sput 68 21c n sput-wide 69 21c n sput-object 6a 21c n sput-boolean 6b 21c n sput-byte 6c 21c n sput-char 6d 21c n sput-short 6e 35c n invoke-virtual 6f 35c n invoke-super 70 35c n invoke-direct 71 35c n invoke-static 72 35c n invoke-interface 73 10x n unused-73 74 3rc n invoke-virtual/range 75 3rc n invoke-super/range 76 3rc n invoke-direct/range 77 3rc n invoke-static/range 78 3rc n invoke-interface/range 79 10x n unused-79 7a 10x n unused-7a 7b 12x y neg-int 7c 12x y not-int 7d 12x y neg-long 7e 12x y not-long 7f 12x y neg-float 80 12x y neg-double 81 12x y int-to-long 82 12x y int-to-float 83 12x y int-to-double 84 12x y long-to-int 85 12x y long-to-float 86 12x y long-to-double 87 12x y float-to-int 88 12x y float-to-long 89 12x y float-to-double 8a 12x y double-to-int 8b 12x y double-to-long 8c 12x y double-to-float 8d 12x y int-to-byte 8e 12x y int-to-char 8f 12x y int-to-short 90 23x y add-int 91 23x y sub-int 92 23x y mul-int 93 23x y div-int 94 23x y rem-int 95 23x y and-int 96 23x y or-int 97 23x y xor-int 98 23x y shl-int 99 23x y shr-int 9a 23x y ushr-int 9b 23x y add-long 9c 23x y sub-long 9d 23x y mul-long 9e 23x y div-long 9f 23x y rem-long a0 23x y and-long a1 23x y or-long a2 23x y xor-long a3 23x y shl-long a4 23x y shr-long a5 23x y ushr-long a6 23x y add-float a7 23x y sub-float a8 23x y mul-float a9 23x y div-float aa 23x y rem-float ab 23x y add-double ac 23x y sub-double ad 23x y mul-double ae 23x y div-double af 23x y rem-double b0 12x y add-int/2addr b1 12x y sub-int/2addr b2 12x y mul-int/2addr b3 12x y div-int/2addr b4 12x y rem-int/2addr b5 12x y and-int/2addr b6 12x y or-int/2addr b7 12x y xor-int/2addr b8 12x y shl-int/2addr b9 12x y shr-int/2addr ba 12x y ushr-int/2addr bb 12x y add-long/2addr bc 12x y sub-long/2addr bd 12x y mul-long/2addr be 12x y div-long/2addr bf 12x y rem-long/2addr c0 12x y and-long/2addr c1 12x y or-long/2addr c2 12x y xor-long/2addr c3 12x y shl-long/2addr c4 12x y shr-long/2addr c5 12x y ushr-long/2addr c6 12x y add-float/2addr c7 12x y sub-float/2addr c8 12x y mul-float/2addr c9 12x y div-float/2addr ca 12x y rem-float/2addr cb 12x y add-double/2addr cc 12x y sub-double/2addr cd 12x y mul-double/2addr ce 12x y div-double/2addr cf 12x y rem-double/2addr d0 22s y add-int/lit16 d1 22s y rsub-int d2 22s y mul-int/lit16 d3 22s y div-int/lit16 d4 22s y rem-int/lit16 d5 22s y and-int/lit16 d6 22s y or-int/lit16 d7 22s y xor-int/lit16 d8 22b y add-int/lit8 d9 22b y rsub-int/lit8 da 22b y mul-int/lit8 db 22b y div-int/lit8 dc 22b y rem-int/lit8 dd 22b y and-int/lit8 de 22b y or-int/lit8 df 22b y xor-int/lit8 e0 22b y shl-int/lit8 e1 22b y shr-int/lit8 e2 22b y ushr-int/lit8 e3 10x n unused-e3 e4 10x n unused-e4 e5 10x n unused-e5 e6 10x n unused-e6 e7 10x n unused-e7 e8 10x n unused-e8 e9 10x n unused-e9 ea 10x n unused-ea eb 10x n unused-eb ec 10x n unused-ec ed 10x n unused-ed ee 10x n unused-ee ef 10x n unused-ef f0 10x n unused-f0 f1 10x n unused-f1 f2 10x n unused-f2 f3 10x n unused-f3 f4 10x n unused-f4 f5 10x n unused-f5 f6 10x n unused-f6 f7 10x n unused-f7 f8 10x n unused-f8 f9 10x n unused-f9 fa 10x n unused-fa fb 10x n unused-fb fc 10x n unused-fc fd 10x n unused-fd fe 10x n unused-fe ff 10x n unused-ff