Рефераты. Ассемблер для платформы Java

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



2012 © Все права защищены
При использовании материалов активная ссылка на источник обязательна.