Я бы настоятельно рекомендовал прочитать спецификацию JVM, которая объясняет все.
Рассматривая ваш конкретный пример
BIPUSH 10
Это помещает 10 в стек
BIPUSH 7
Это помещает 7 в стек.Стек теперь 10 7
IXOR
Это xors верхних двух элементов.Стек теперь равен 10 ^ 7 = 13
ISTORE 1
. Здесь хранится верхний элемент в слоте локальной переменной 1. Стек теперь пуст, а локальные: [INVALID, 13]
IINC 1 19
Это увеличивает локальное значение 1 на 19. Теперь локальное значение [INVALID, 32]
GETSTATIC java/lang/System.out : Ljava/io/PrintStream;
Это помещает System.out в стек
ILOAD 1
Это загружает переменную встек
INVOKEVIRTUAL java/io/PrintStream.println (I)V
И это печатает.Таким образом, конечный результат - это печать 32
.
Этот байт-код, вероятно, был сгенерирован Java-кодом в соответствии со следующими строками
int x = 10 ^ 7;
x += 19;
System.out.println(x);