Списки инструкций байт-кода Java - Java bytecode instruction listings

Это список инструкций, составляющих Байт-код Java, абстрактный машинный язык, который в конечном итоге выполняется Виртуальная машина Java. Байт-код Java генерируется из языков, работающих на Платформа Java, в первую очередь Язык программирования Java.

Обратите внимание, что любое указанное «значение» относится к 32-битному int согласно набору инструкций Java.

МнемоническийКод операции
шестнадцатеричный )
Код операции (в двоичном формате)Другие байты
[количество]: [метки операндов]
Куча
[до] → [после]
Описание
аалоад320011 0010ссылка на массив, индекс → значениезагрузить в стек ссылку из массива
aastore530101 0011ссылка на массив, индекс, значение →сохранить ссылку в массиве
aconst_null010000 0001→ нольтолкнуть ноль ссылка на стек
нагрузка190001 10011: индекс→ ссылка на объектзагрузить ссылку в стек из локальной переменной #индекс
aload_00010 1010→ ссылка на объектзагрузить ссылку в стек из локальной переменной 0
aload_12b0010 1011→ ссылка на объектзагрузить ссылку в стек из локальной переменной 1
aload_22c0010 1100→ ссылка на объектзагрузить ссылку в стек из локальной переменной 2
aload_32d0010 1101→ ссылка на объектзагрузить ссылку в стек из локальной переменной 3
зановоbd1011 11012: indexbyte1, indexbyte2счет → ссылка на массивсоздать новый массив ссылок длины считать и тип компонента, идентифицированный ссылкой на класс индекс (indexbyte1 << 8 | indexbyte2) в постоянном бассейне
возвращениеb01011 0000ссылка на объект → [пусто]вернуть ссылку из метода
длина массивабыть1011 1110ссылка на массив → длинаполучить длину массива
склад0011 10101: индексссылка на объект →сохранить ссылку в локальную переменную #индекс
astore_04b0100 1011ссылка на объект →сохранить ссылку в локальную переменную 0
astore_14c0100 1100ссылка на объект →сохранить ссылку в локальную переменную 1
astore_24d0100 1101ссылка на объект →сохранить ссылку в локальную переменную 2
astore_34e0100 1110ссылка на объект →сохранить ссылку в локальную переменную 3
бежатьпарень1011 1111ссылка на объект → [пусто], ссылка на объектвыдает ошибку или исключение (обратите внимание, что остальная часть стека очищается, остается только ссылка на Throwable)
балоад330011 0011ссылка на массив, индекс → значениезагрузить байтовое или логическое значение из массива
Bastore540101 0100ссылка на массив, индекс, значение →хранить байтовое или логическое значение в массиве
бипуш100001 00001: байт→ значениетолкнуть байт в стек как целое число ценить
точка остановаок1100 1010зарезервировано для точек останова в отладчиках Java; не должен появляться ни в каком файле класса
Caload340011 0100ссылка на массив, индекс → значениезагрузить символ из массива
кастора550101 0101ссылка на массив, индекс, значение →сохранить символ в массив
проверкаc01100 00002: indexbyte1, indexbyte2ссылка на объект → ссылка на объектпроверяет, есть ли ссылка на объект имеет определенный тип, ссылка на класс которого находится в постоянном пуле по адресу индекс (indexbyte1 << 8 | indexbyte2)
d2f901001 0000значение → результатпреобразовать двойной к плавать
d2i8e1000 1110значение → результатпреобразовать double в int
d2l8f1000 1111значение → результатпреобразовать двойное в длинное
папа630110 0011значение1, значение2 → результатдобавить два дубля
далоад310011 0001ссылка на массив, индекс → значениезагрузить двойник из массива
dastore520101 0010ссылка на массив, индекс, значение →сохранить двойное значение в массиве
dcmpg981001 1000значение1, значение2 → результатсравнить два двойных, 1 на NaN
dcmpl971001 0111значение1, значение2 → результатсравнить два двойных, -1 на NaN
dconst_00e0000 1110→ 0.0толкать константу 0.0двойной) в стек
dconst_10f0000 1111→ 1.0толкать константу 1.0двойной) в стек
ddiv6f0110 1111значение1, значение2 → результатразделить два дубля
загружать180001 10001: индекс→ значениезагрузить двойной ценить из локальной переменной #индекс
dload_0260010 0110→ значениезагрузить дубль из локальной переменной 0
dload_1270010 0111→ значениезагрузить дубль из локальной переменной 1
dload_2280010 1000→ значениезагрузить дубль из локальной переменной 2
dload_3290010 1001→ значениезагрузить дубль из локальной переменной 3
Дмуль6b0110 1011значение1, значение2 → результатумножить два двойных
днег770111 0111значение → результатсвести на нет двойной
дрем730111 0011значение1, значение2 → результатполучить остаток от деления между двумя двойными
dreturnаф1010 1111значение → [пусто]вернуть двойное значение из метода
dstore390011 10011: индексзначение →хранить двойной ценить в локальную переменную #индекс
dstore_0470100 0111значение →сохранить двойное значение в локальной переменной 0
dstore_1480100 1000значение →сохранить двойное значение в локальной переменной 1
dstore_2490100 1001значение →сохранить двойное значение в локальной переменной 2
dstore_30100 1010значение →сохранить двойное значение в локальной переменной 3
dsub670110 0111значение1, значение2 → результатвычесть двойное из другого
обман590101 1001значение → значение, значениедублировать значение в верхней части стека
dup_x10101 1010значение2, значение1 → значение1, значение2, значение1вставить копию верхнего значения в стек на два значения сверху. value1 и value2 не должны быть типа double или long.
dup_x25b0101 1011значение3, значение2, значение1 → значение1, значение3, значение2, значение1вставить копию верхнего значения в стек два (если value2 - double или long, он также занимает запись value3) или три значения (если value2 ни double, ни long) сверху
dup25c0101 1100{значение2, значение1} → {значение2, значение1}, {значение2, значение1}дублировать два верхних слова стека (два значения, если value1 не является ни двойным, ни длинным; одно значение, если value1 является двойным или длинным)
dup2_x15d0101 1101значение3, {значение2, значение1} → {значение2, значение1}, значение3, {значение2, значение1}продублируйте два слова и вставьте под третьим словом (см. объяснение выше)
dup2_x25e0101 1110{значение4, значение3}, {значение2, значение1} → {значение2, значение1}, {значение4, значение3}, {значение2, значение1}продублируйте два слова и вставьте под четвертым словом
f2d8d1000 1101значение → результатпреобразовать число с плавающей запятой в двойное
f2i8b1000 1011значение → результатпреобразовать float в int
f2l8c1000 1100значение → результатпреобразовать float в длинный
причуда620110 0010значение1, значение2 → результатдобавить два поплавка
фалоад300011 0000ссылка на массив, индекс → значениезагрузить поплавок из массива
fastore510101 0001ссылка на массив, индекс, значение →хранить поплавок в массиве
fcmpg961001 0110значение1, значение2 → результатсравнить два числа с плавающей запятой, 1 на NaN
fcmpl951001 0101значение1, значение2 → результатсравнить два числа с плавающей запятой, -1 на NaN
fconst_00b0000 1011→ 0,0fтолкать 0,0f в стеке
fconst_10c0000 1100→ 1.0fтолкать 1.0f в стеке
fconst_20d0000 1101→ 2.0fтолкать 2.0f в стеке
fdiv6e0110 1110значение1, значение2 → результатразделить два поплавка
fload170001 01111: индекс→ значениезагрузить поплавок ценить из локальной переменной #индекс
fload_0220010 0010→ значениезагрузить поплавок ценить из локальной переменной 0
fload_1230010 0011→ значениезагрузить поплавок ценить из локальной переменной 1
fload_2240010 0100→ значениезагрузить поплавок ценить из локальной переменной 2
fload_3250010 0101→ значениезагрузить поплавок ценить из локальной переменной 3
фмуль0110 1010значение1, значение2 → результатумножить два числа
fneg760111 0110значение → результатотрицать поплавок
frem720111 0010значение1, значение2 → результатполучить остаток от деления между двумя поплавками
раздражениеае1010 1110значение → [пусто]вернуть поплавок
магазин380011 10001: индексзначение →хранить поплавок ценить в локальную переменную #индекс
fstore_0430100 0011значение →хранить поплавок ценить в локальную переменную 0
fstore_1440100 0100значение →хранить поплавок ценить в локальную переменную 1
fstore_2450100 0101значение →хранить поплавок ценить в локальную переменную 2
fstore_3460100 0110значение →хранить поплавок ценить в локальную переменную 3
fsub660110 0110значение1, значение2 → результатвычесть два числа с плавающей запятой
Getfieldb41011 01002: indexbyte1, indexbyte2ссылка на объект → значениеполучить поле ценить объекта ссылка на объект, где поле идентифицируется ссылкой на поле в пуле констант индекс (indexbyte1 << 8 | indexbyte2)
getstaticБи 21011 00102: indexbyte1, indexbyte2→ значениеполучить статическое поле ценить класса, где поле идентифицируется ссылкой на поле в пуле констант индекс (indexbyte1 << 8 | indexbyte2)
идти ка71010 01112: branchbyte1, branchbyte2[без изменений]переходит к другой инструкции на ответвление (короткое со знаком, построенное из байтов без знака branchbyte1 << 8 | branchbyte2)
goto_wc81100 10004: ветвьбайт1, ветвьбайт2, ветвьбайт3, ветвьбайт4[без изменений]переходит к другой инструкции на ответвление (подписанное int, построенное из байтов без знака branchbyte1 << 24 | branchbyte2 << 16 | branchbyte3 << 8 | branchbyte4)
i2b911001 0001значение → результатпреобразовать int в байт
i2c921001 0010значение → результатпреобразовать int в символ
i2d871000 0111значение → результатпреобразовать int в double
i2f861000 0110значение → результатпреобразовать int в float
i2l851000 0101значение → результатпреобразовать int в длинное
i2s931001 0011значение → результатпреобразовать int в короткий
я добавить600110 0000значение1, значение2 → результатдобавить две целые
iaload2e0010 1110ссылка на массив, индекс → значениезагрузить int из массива
я и7e0111 1110значение1, значение2 → результатвыполнить побитовое И для двух целых чисел
iastore4f0100 1111ссылка на массив, индекс, значение →сохранить int в массив
iconst_m1020000 0010→ -1загрузить в стек значение int −1
iconst_0030000 0011→ 0загрузить значение int 0 в стек
iconst_1040000 0100→ 1загрузить значение int 1 в стек
iconst_2050000 0101→ 2загрузить значение int 2 в стек
iconst_3060000 0110→ 3загрузить значение int 3 в стек
iconst_4070000 0111→ 4загрузить в стек значение int 4
iconst_5080000 1000→ 5загрузить значение int 5 в стек
идив6c0110 1100значение1, значение2 → результатразделить два целых числа
if_acmpeqа51010 01012: branchbyte1, branchbyte2значение1, значение2 →если ссылки равны, перейти к инструкции в ответвление (короткое со знаком, построенное из байтов без знака branchbyte1 << 8 | branchbyte2)
if_acmpneа61010 01102: branchbyte1, branchbyte2значение1, значение2 →если ссылки не равны, перейти к инструкции в ответвление (короткое со знаком, построенное из байтов без знака branchbyte1 << 8 | branchbyte2)
if_icmpeq9f1001 11112: branchbyte1, branchbyte2значение1, значение2 →если целые числа равны, перейти к инструкции в ответвление (короткое со знаком, построенное из байтов без знака branchbyte1 << 8 | branchbyte2)
if_icmpgeа21010 00102: branchbyte1, branchbyte2значение1, значение2 →если значение1 Больше или равно значение2, перейти к инструкции по адресу ответвление (короткое со знаком, построенное из байтов без знака branchbyte1 << 8 | branchbyte2)
if_icmpgtа31010 00112: branchbyte1, branchbyte2значение1, значение2 →если значение1 больше, чем значение2, перейти к инструкции по адресу ответвление (короткое со знаком, построенное из байтов без знака branchbyte1 << 8 | branchbyte2)
if_icmpleа41010 01002: branchbyte1, branchbyte2значение1, значение2 →если значение1 меньше или равно значение2, перейти к инструкции по адресу ответвление (короткое со знаком, построенное из байтов без знака branchbyte1 << 8 | branchbyte2)
if_icmpltа11010 00012: branchbyte1, branchbyte2значение1, значение2 →если значение1 меньше чем значение2, перейти к инструкции по адресу ответвление (короткое со знаком, построенное из байтов без знака branchbyte1 << 8 | branchbyte2)
if_icmpneа01010 00002: branchbyte1, branchbyte2значение1, значение2 →если целые числа не равны, перейти к инструкции в ответвление (короткое со знаком, построенное из байтов без знака branchbyte1 << 8 | branchbyte2)
ifeq991001 10012: branchbyte1, branchbyte2значение →если ценить равно 0, переход к инструкции в ответвление (короткое со знаком, построенное из байтов без знака branchbyte1 << 8 | branchbyte2)
ifge9c1001 11002: branchbyte1, branchbyte2значение →если ценить больше или равно 0, переход к инструкции в ответвление (короткое со знаком, построенное из байтов без знака branchbyte1 << 8 | branchbyte2)
ifgt9d1001 11012: branchbyte1, branchbyte2значение →если ценить больше 0, перейти к инструкции в ответвление (короткое со знаком, построенное из байтов без знака branchbyte1 << 8 | branchbyte2)
ifle9e1001 11102: branchbyte1, branchbyte2значение →если ценить меньше или равно 0, перейти к инструкции в ответвление (короткое со знаком, построенное из байтов без знака branchbyte1 << 8 | branchbyte2)
iflt9b1001 10112: branchbyte1, branchbyte2значение →если ценить меньше 0, перейти к инструкции в ответвление (короткое со знаком, построенное из байтов без знака branchbyte1 << 8 | branchbyte2)
ifne1001 10102: branchbyte1, branchbyte2значение →если ценить не 0, перейти к инструкции в ответвление (короткое со знаком, построенное из байтов без знака branchbyte1 << 8 | branchbyte2)
ifnonnullc71100 01112: branchbyte1, branchbyte2значение →если ценить не равно нулю, перейти к инструкции в ответвление (короткое со знаком, построенное из байтов без знака branchbyte1 << 8 | branchbyte2)
ifnullc61100 01102: branchbyte1, branchbyte2значение →если ценить имеет значение null, переход к инструкции в ответвление (короткое со знаком, построенное из байтов без знака branchbyte1 << 8 | branchbyte2)
iinc841000 01002: индекс, const[Без изменений]увеличить локальную переменную #индекс по подписанному байту const
iload150001 01011: индекс→ значениезагрузить int ценить из локальной переменной #индекс
iload_00001 1010→ значениезагрузить int ценить из локальной переменной 0
iload_11b0001 1011→ значениезагрузить int ценить из локальной переменной 1
iload_21c0001 1100→ значениезагрузить int ценить из локальной переменной 2
iload_30001 1101→ значениезагрузить int ценить из локальной переменной 3
impdep1fe1111 1110зарезервировано для зависимых от реализации операций в отладчиках; не должен появляться ни в каком файле класса
impdep2ff1111 1111зарезервировано для зависимых от реализации операций в отладчиках; не должен появляться ни в каком файле класса
имул680110 1000значение1, значение2 → результатумножить два целых числа
инег740111 0100значение → результатотрицать int
экземплярc11100 00012: indexbyte1, indexbyte2ссылка на объект → результатопределяет, ссылка на объект имеет данный тип, идентифицированный ссылкой на класс индекс в постоянном бассейне (indexbyte1 << 8 | indexbyte2)
invokedynamicба1011 10104: indexbyte1, indexbyte2, 0, 0[arg1, [arg2 ...]] → результатвызывает динамический метод и помещает результат в стек (может быть недействительным); метод идентифицируется ссылкой на метод индекс в постоянном бассейне (indexbyte1 << 8 | indexbyte2)
invokeinterfaceb91011 10014: indexbyte1, indexbyte2, count, 0ссылка на объект, [аргумент1, аргумент2, ...] → результатвызывает метод интерфейса для объекта ссылка на объект и помещает результат в стек (может быть недействительным); метод интерфейса идентифицируется ссылкой на метод индекс в постоянном бассейне (indexbyte1 << 8 | indexbyte2)
вызывает особыйb71011 01112: indexbyte1, indexbyte2ссылка на объект, [аргумент1, аргумент2, ...] → результатвызвать метод экземпляра объекта ссылка на объект и помещает результат в стек (может быть недействительным); метод идентифицируется ссылкой на метод индекс в постоянном бассейне (indexbyte1 << 8 | indexbyte2)
invokestaticb81011 10002: indexbyte1, indexbyte2[arg1, arg2, ...] → результатвызвать статический метод и поместить результат в стек (может быть недействительным); метод идентифицируется ссылкой на метод индекс в постоянном бассейне (indexbyte1 << 8 | indexbyte2)
invokevirtualb61011 01102: indexbyte1, indexbyte2ссылка на объект, [аргумент1, аргумент2, ...] → результатвызвать виртуальный метод объекта ссылка на объект и помещает результат в стек (может быть недействительным); метод идентифицируется ссылкой на метод индекс в постоянном бассейне (indexbyte1 << 8 | indexbyte2)
ior801000 0000значение1, значение2 → результатпобитовое int ИЛИ
ирем700111 0000значение1, значение2 → результатлогический остаток int
я возвращаюсьac1010 1100значение → [пусто]вернуть целое число из метода
ишл780111 1000значение1, значение2 → результатint сдвиг влево
ишр0111 1010значение1, значение2 → результатint арифметический сдвиг вправо
istore360011 01101: индексзначение →магазин int ценить в переменную #индекс
istore_03b0011 1011значение →магазин int ценить в переменную 0
istore_13c0011 1100значение →магазин int ценить в переменную 1
istore_23D0011 1101значение →магазин int ценить в переменную 2
istore_33e0011 1110значение →магазин int ценить в переменную 3
isub640110 0100значение1, значение2 → результатint вычесть
иушр7c0111 1100значение1, значение2 → результатint логический сдвиг вправо
иксор821000 0010значение1, значение2 → результатint xor
jsrа81010 10002: branchbyte1, branchbyte2→ адресперейти к подпрограмме в ответвление (короткое со знаком, построенное из байтов без знака branchbyte1 << 8 | branchbyte2) и поместите адрес возврата в стек
jsr_wc91100 10014: ветвьбайт1, ветвьбайт2, ветвьбайт3, ветвьбайт4→ адресперейти к подпрограмме в ответвление (подписанное int, построенное из байтов без знака branchbyte1 << 24 | branchbyte2 << 16 | branchbyte3 << 8 | branchbyte4) и поместите адрес возврата в стек
l2d1000 1010значение → результатпреобразовать длинную в двойную
l2f891000 1001значение → результатпреобразовать длинное число в плавающее
l2i881000 1000значение → результатпреобразовать long в int
лестница610110 0001значение1, значение2 → результатдобавить два длинных
лалоад2f0010 1111ссылка на массив, индекс → значениезагрузить long из массива
земельные участки7f0111 1111значение1, значение2 → результатпобитовый И двух длинных
магазин500101 0000ссылка на массив, индекс, значение →сохранить длинный массив в массив
lcmp941001 0100значение1, значение2 → результатнажмите 0, если два типа long совпадают, 1, если значение1 больше значения2, в противном случае -1
lconst_0090000 1001→ 0Lтолкать 0L (номер нуль с типом длинный) в стек
lconst_10000 1010→ 1лтолкать (номер один с типом длинный) в стек
ldc120001 00101: индекс→ значениевыдвинуть постоянную #индекс из пула констант (String, int, float, Class, java.lang.invoke.MethodType, java.lang.invoke.MethodHandle или динамически вычисляемая константа) в стек
ldc_w130001 00112: indexbyte1, indexbyte2→ значениеподтолкнуть константу #индекс из пула констант (String, int, float, Class, java.lang.invoke.MethodType, java.lang.invoke.MethodHandle или динамически вычисляемая константа) в стек (широкий индекс построен как indexbyte1 << 8 | indexbyte2)
ldc2_w140001 01002: indexbyte1, indexbyte2→ значениевыдвинуть константу #индекс из пула констант (double, long или динамически вычисляемая константа) в стек (широкий индекс построен как indexbyte1 << 8 | indexbyte2)
ldiv6d0110 1101значение1, значение2 → результатразделить две длинные позиции
lload160001 01101: индекс→ значениезагрузить длинное значение из локальной переменной #индекс
lload_01e0001 1110→ значениезагрузить длинное значение из локальной переменной 0
lload_11f0001 1111→ значениезагрузить длинное значение из локальной переменной 1
lload_2200010 0000→ значениезагрузить длинное значение из локальной переменной 2
lload_3210010 0001→ значениезагрузить длинное значение из локальной переменной 3
Имуль690110 1001значение1, значение2 → результатумножить две длинные
lneg750111 0101значение → результатсвести на нет длинный
поисковый переключательab1010 10118+: <0–3 байта заполнения>, defaultbyte1, defaultbyte2, defaultbyte3, defaultbyte4, npairs1, npairs2, npairs3, npairs4, пары совпадение-смещение ...ключ →целевой адрес ищется из таблицы с помощью ключа, и выполнение продолжается с инструкции по этому адресу
лор811000 0001значение1, значение2 → результатпобитовое ИЛИ двух длинных чисел
lrem710111 0001значение1, значение2 → результатостаток от деления двух длинных позиций
я возвращаюсьобъявление1010 1101значение → [пусто]вернуть длинное значение
лшл790111 1001значение1, значение2 → результатпобитовый сдвиг влево от длинного значение1 по int значение2 позиции
lshr7b0111 1011значение1, значение2 → результатпобитовый сдвиг вправо длинного значение1 по int значение2 позиции
lstore370011 01111: индексзначение →хранить долго ценить в локальной переменной #индекс
lstore_03f0011 1111значение →хранить долго ценить в локальной переменной 0
lstore_1400100 0000значение →хранить долго ценить в локальной переменной 1
lstore_2410100 0001значение →хранить долго ценить в локальной переменной 2
lstore_3420100 0010значение →хранить долго ценить в локальной переменной 3
lsub650110 0101значение1, значение2 → результатвычесть две длинные
пышный7d0111 1101значение1, значение2 → результатпобитовый сдвиг вправо длинного значение1 по int значение2 должности, без знака
lxor831000 0011значение1, значение2 → результатпобитовый XOR двух длинных
наблюдательc21100 0010ссылка на объект →войти в монитор объекта («захватить замок» - запуск раздела synchronized ())
monitorexitc31100 0011ссылка на объект →выйти из монитора для объекта («снять блокировку» - конец раздела synchronized ())
multianewarrayc51100 01013: indexbyte1, indexbyte2, размерыcount1, [count2, ...] → ссылка на массивсоздать новый массив размеры размеры типа, идентифицированные ссылкой на класс в постоянном пуле индекс (indexbyte1 << 8 | indexbyte2); размеры каждого измерения обозначены count1, [count2, так далее.]
новыйbb1011 10112: indexbyte1, indexbyte2→ ссылка на объектсоздать новый объект типа, идентифицированного ссылкой на класс в постоянном пуле индекс (indexbyte1 << 8 | indexbyte2)
newarrayдо н.э1011 11001: нетипсчет → ссылка на массивсоздать новый массив с считать элементы примитивного типа, идентифицированные тип
нет000000 0000[Без изменений]не выполнять никаких операций
поп570101 0111значение →отбросить верхнее значение в стеке
pop2580101 1000{значение2, значение1} →отбросить два верхних значения в стеке (или одно значение, если оно двойное или длинное)
путфилдb51011 01012: indexbyte1, indexbyte2ссылка на объект, значение →установить поле на ценить в объекте ссылка на объект, где поле идентифицируется ссылкой на поле индекс в постоянном бассейне (indexbyte1 << 8 | indexbyte2)
путстатическийb31011 00112: indexbyte1, indexbyte2значение →установить статическое поле в ценить в классе, где поле идентифицируется ссылкой на поле индекс в постоянном бассейне (indexbyte1 << 8 | indexbyte2)
Retа91010 10011: индекс[Без изменений]продолжить выполнение с адреса, взятого из локальной переменной #индекс (асимметрия с jsr преднамерена)
возвращатьсяb11011 0001→ [пусто]вернуть void из метода
салат350011 0101ссылка на массив, индекс → значениекороткая загрузка из массива
sastore560101 0110ссылка на массив, индекс, значение →хранить до массива
сипуш110001 00012: байт1, байт2→ значениепоместите короткое замыкание в стек как целое число ценить
замена5f0101 1111значение2, значение1 → значение1, значение2меняет местами два верхних слова в стеке (обратите внимание, что значение1 и значение2 не должны быть двойными или длинными)
переключатель столааа1010 101016+: [0–3 байта заполнения], defaultbyte1, defaultbyte2, defaultbyte3, defaultbyte4, lowbyte1, lowbyte2, lowbyte3, lowbyte4, highbyte1, highbyte2, highbyte3, highbyte4, смещения перехода ...индекс →продолжить выполнение с адреса в таблице по смещению индекс
широкийc41100 01003/5: код операции, indexbyte1, indexbyte2
или же
iinc, indexbyte1, indexbyte2, countbyte1, countbyte2
[то же, что и для соответствующих инструкций]выполнять код операции, куда код операции это iload, fload, aload, lload, dload, istore, fstore, astore, lstore, dstore или ret, но предположим, что индекс 16 бит; или выполнить iinc, где индекс составляет 16 бит, а константа, на которую нужно увеличивать, является короткой длиной 16 бит со знаком
(без имени)CB-FDэти значения в настоящее время не назначены для кодов операций и зарезервированы для использования в будущем.

Смотрите также

внешняя ссылка