o Сохранение значения с вершины стека в локальной переменной: istore, istore_<n>, lstore, lstore_<n>, fstore, fstore_<n>, dstore, dstore_<n>, astore, astore_<n>;
o Загрузка констант на стек: istore, istore_<n>, lstore, lstore_<n>, fstore, fstore_<n>, dstore, dstore_<n>, astore, astore_<n>;
· арифметические и логические команды:
o сложение: iadd, ladd, fadd, dadd;
o вычитание: isub, lsub, fsub, dsub;
o умножение: imul, lmul, fmul, dmul;
o деление: idiv, ldiv, fdiv, ddiv;
o остаток: irem, lrem, frem, drem;
o изменение знака: ineg, lneg, fneg, dneg;
o сдвиги и побитовые операции: ior, lor, iand, land, ixor, lxor, ishl, ishr, iushr, lshl, lshr, lush;
o сравнение: dcmpg, dcmpl, fcmpg, fcmpl, lcmg;
o инкремент локальной переменной: iinc.
Все эти команды, за исключением iinc, не имеют параметров. Они извлекают операнды с вершины стека и записывают результат на вершину стека. Команда iinc имеет два операнда - индекс локальной переменной и величину, на которую значение данной переменной должно быть изменено;
· команды преобразования типов:
o расширяющее: i2l, i2f, i2d, l2f, l2d, f2d;
o сужающее: i2b, i2c, i2s, l2i, f2i, f2l, d2i, d2l, d2f;
· команды работы с объектами и массивами:
o создание объекта: new;
o создание массива: newarray (примитивного типа), anewarray (ссылочного типа), multianewarray(многомерного);
o доступ к полям: getfield, putfield (для полей экземпляра), getstatic, putstatic (для статических полей);
o загрузка элемента массива на стек: baload (тип byte), caload (тип char), saload (тип short), iaload, laload, faload, daload, aaload;
o сохранение значения с вершины стека в элемент массива: bastore, castore, sastore, iastore, lastore, fastore, dastore, aastore;
o получение размера массива: arraylength;
o проверка типов: instanceof (возвращает на вершине стека логическое значение) и checkcast (генерирует исключение в случае несоответствия типа ссылки на вершине стека требуемому типу);
· команды манипуляций со стеком операндов:
o pop - удаление верхнего элемент стека;
o pop2 - удаление двух верхних элемента стека;
o dup, dup2, dup_x1, dup2_x1, dup_x2, dup2_x2 - дублирование элементов на вершине стека;
o swap - перемена местами двух верхних элементов стека;
· команды безусловной передачи управления:
o jsr, jsr_w, ret - вызов подпрограмм и возврат из них. Используются при компиляции блока finally;
o goto, goto_w - безусловный переход;
· команды условного перехода: ifeq, iflt, ifle, ifne, ifgt, ifge, ifnull, ifnonnull, if_icmpeq, if_icmpne, if_icmplt, if_icmpgt, if_icmple, if_icmpge, if_acmpeq, if_acmpne;
· команды вызова методов:
o invokevirtual - обычный вызов метода экземпляра с использованием механизма позднего связывания;
o invokestatic - вызов статического метода;
o invokeinterface - вызов метода интерфейса у объекта, реализующего данный интерфейс;
o invokespecial - вызов метода экземпляра без использования механизма позднего связывания. Используется для вызова конструкторов, методов суперкласса и private-методов;
· команды возврата из метода:
o return - возврат из метода, возвращающего void;
o ireturn, lreturn, freturn , dreturn, areturn - возврат значения соответствующего типа;
Страницы: 1, 2, 3, 4, 5, 6, 7