# 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