Теми рефератів
> Реферати > Курсові роботи > Звіти з практики > Курсові проекти > Питання та відповіді > Ессе > Доклади > Учбові матеріали > Контрольні роботи > Методички > Лекції > Твори > Підручники > Статті Контакти
Реферати, твори, дипломи, практика » Курсовые проекты » Асемблер для платформи Java

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





ачення типів long і double займають два осередки стека (8 байт), будь-які інші значення - одну (4 байти). Значення типів char, boolean, byte, short зберігаються в одній четирехбайтний комірці. Тут можна відзначити, що в переважній більшості випадків JVM не розрізняє між логічними значеннями і цілими числами типу int, для середовища виконання не існує окремого булевского типу (брехні відповідає нульове значення, істині - ненульове, як правило, одиниця). Однак, в масивах типу boolean [] на кожен елемент виділяється один байт. Існує таке обмеження на байт-код: щоразу, коли точка виконання досягає будь-якої конкретної позиції в методі, глибина стека має бути однаковою, крім того, тип верхніх значень в стеку повинен відповідати необхідному типом видобутих черговий командою значень.

В області локальних змінних на момент початку виконання методу в перших позиціях знаходяться фактичні параметри методу, а в разі методу примірника першу (Нульову) позицію займає посилання this на поточний об'єкт. Ніякої відмінності в процесі виконання методу між параметрами (навіть посиланням this) і, власне кажучи, локальними змінними не робиться. Так само як і в стеку, значення типу long і double в області локальних змінних займають дві четирехбайтний клітинки, значення типів розміром менше 32-х розрядів розширюються до чотирьох байт. У коректному байт-коді повинні виконуватися, в Зокрема, такі умови: по-перше, типи значень у локальних змінних повинні відповідати необхідним для команд, які звертаються до цих змінним, по-друге, не допускається читання значення змінної до її ініціалізації (присвоєння значення).

Перед викликом методу його фактичні параметри повинні перебувати на вершині стека; вони стають операндами відповідної команди виклику. При поверненні з методу, за винятком методів, які повертають void, повертається значення поміщається на вершину стека.

У процесі виконання програми в результаті виникнення тієї чи іншої помилки або виконання команди athrow може бути згенеровано виняток. При цьому відбувається пошук відповідного обробника виключення (Захищеного блоку) у поточному методі, якщо він не знайдений, то в методі, що викликала поточний і т. д. Якщо відповідний обробник знайдений, то управління передається в точку, яка визначається полем handler_pc відповідного запису таблиці exception_table в атрибуті Code методу. Посилання на об'єкт виключення при цьому поміщається на вершину стека. Об'єкт винятку обов'язково повинен належати класу Throwable або класу, похідному від нього.

В  Система команд JVM.

Перший байт кожної команди JVM містить код операції. Існує кілька типових форматів, які мають більшість команд:

В· тільки код операції,

В· код операції та однобайтное індекс

В· код операції та двухбайтного індекс,

В· код операції та двухбайтное зміщення переходу,

В· код операції та четирехбайтное зміщення переходу.

Кілька команд використовують інші формати, серед них дві команди змінного розміру - tableswitch і lookupswitch. Крім того, існує спеціальний префікс wide, який змінює розмір деяких команд, замінюючи однобайтное індекс локальної змінної двухбайтного. У The Java Virtual Machine Specification для кожної команди встановлено своє мнемонічне позначення.

Існує багато груп аналогічних по виконуваному дії команд, що працюють з різними типами даних, наприклад, команди 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 > , < i> lload , lload _ < n > , fload , fload _ < n > , dload , dload _ < n > , aload , aload _ < n > ;

o Збереження значення з вершини стека в локальній змінної: istore , istore_ , lstore , lstore_ , fstore , fstore_ , dstore , dstore_ , astore , astore_ ;

o Завантаження констант на стек: istore , istore_ , lstore , lstore_ , fstore , fstore_ , dstore , dstore_ , astore , astore_ ; ...


Назад | сторінка 5 з 14 | Наступна сторінка





Схожі реферати:

  • Реферат на тему: Система команд. Структура слова команд. Синтаксис команд. Групи команд
  • Реферат на тему: Принципи організації паралелізму виконання машинних команд в процесорах
  • Реферат на тему: Розробка структури гіпотетичного мікропроцесора і центральній частині МЕОМ ...
  • Реферат на тему: Значення методу моделювання в процесі слухання музики
  • Реферат на тему: Місце ТА значення реєстраційніх рахунків в процесі Виконання бюджету