Курсовая работа: Ассемблер для платформы Java

Существует много групп аналогичных по выполняемому действию команд, работающих с различными типами данных, например, команды iload, lload, aload, fload, dload выполняют функцию загрузки значений соответствующих типов из локальных переменных на вершину стека. Реализация таких команд может быть идентичной, но он различаются при проверке корректности байт-кода. Приняты следующие обозначения для типов данных, с которыми работают команды:

· i - int (также byte, short, char и boolean),

· l - long,

· f - float,

· d - double,

· a - ссылка на объект или массив.

Кроме того, есть несколько команд, работающих с типами char, byte и short.

Можно выделить несколько групп команд по назначению:

· команды загрузки и сохранения:

o Загрузка локальной переменной на стек: iload , iload _< n > , lload , lload _< n > , fload , fload _< n > , dload , dload _< n > , aload , aload _< n > ;

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 , lcm g ;

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 (многомерного);

К-во Просмотров: 405
Бесплатно скачать Курсовая работа: Ассемблер для платформы Java