monitorexit - звільнити блокування (Вийти з критичної секції). <В
Синтаксис мови асемблера для платформи Java (мови JASM).
Файл вихідного тексту мовою асемблера для платформи Java (мовою JASM) являє собою текстовий файл, рядки якого розділені послідовністю символів з кодами 13 і 10. Файл вихідного тексту і його розширення можуть бути будь-якими, однак рекомендується, щоб ім'я збігалося з ім'ям описаного у файлі класу, а розширенням було. jasm небудь. jsm. Файл вихідного тексту складається з пропозицій, розділених крапкою з комою. Остання пропозиція може не мати в кінці крапки з комою. Коментарі відокремлюються знаком відсотка і поширюються до кінця рядка. Крапки з комою і знаки відсотка всередині строкових констант, обмежених подвійними лапками, не мають свого спеціального значення. Дві що йдуть підряд подвійні лапки всередині строковой константи інтерпретуються як одна подвійна лапка в рядку. Будь-які послідовності символів пробілів (прогалин, табуляцій, перекладів рядка і т. д.) інтерпретуються як один пробіл, якщо з обох сторін від них знаходяться символи наступних видів: літери латинського алфавіту, цифри, знак підкреслення, або, в іншому випадку, ігноруються. Виняток становлять пробільні символи в строкових константах і коментарях. Верхній і нижній регістр букв у ідентифікаторах, іменах команд та інших лексемах розрізняється.
Кожен файл вихідного тексту компілюється в один файл класу. Файл вихідного тексту повинен мати наступну структуру:
[модіфікатори_доступа] {Class | interface} <Імя_класса>;
[extends <Базовий клас>;]
[implements <Інтерфейс_1>, <інтерфейс_2>, ... , <Інтерфейс_n>;]
[fields;
<опісанія_полей>
]
[methods;
<опісанія_методов>
]
В
Тут і далі в квадратні дужки укладені необов'язкові елементи, у фігурні - альтернативні варіанти (розділені вертикальною рискою), в кутові - нетермінальні символи. p> Модіфікатори_доступа - Це слова public, final, abstract, super, відповідні прапорам прав доступу ACC_PUBLIC, ACC_FINAL, ACC_ABSTRACT, ACC_STATIC. Ці прапори встановлюються в одиницю тоді і тільки тоді, коли в оголошенні класу присутній відповідне ключове слово. Клас може мати кілька різних модифікаторів доступу, відокремлених пропуском (або будь-який інший послідовністю пробільних символів). Повторення однакових модифікаторів в заголовку одного класу не допускається. Коли клас не має прапора ACC_INTERFACE, в його оголошенні використовується слово class, інакше використовується ключове слово interface. Всі імена класів і інтерфейсів записуються із зазначенням повного шляху (пакетів, в яких ці класи містяться). Імена пакетів і класу відокремлюються крапкою, наприклад, java.lang.String. В аргументах команд, там, де це необхідно, замість повного імені поточного класу можна використовувати символ В«@В». Якщо базовий клас не указан (пропозиція extends відсутній), то за замовчуванням використовується java.lang.Object. Інтерфейси - предки описуваного інтерфейсу записуються в секції implements. p> Для ідентифікаторів - назв пакунків, класів, полів і методів, а також міток, використовуються наступні правила: вони повинні складатися з букв латинського алфавіту будь-якого регістра (регістр має значення), знаків підкреслення і цифр, причому не повинні починатися з цифри. Настійно не рекомендується використання ідентифікаторів, співпадають з ключовими словами мови Java, що може призвести до некоректної компіляції, або інтерпретації файлів класів JVM. Два спеціальних імені і також розглядаються як ідентифікатори.
Найпростіший приклад опису класу, що не має полів і методів:
public abstract class some_package.SomeClass;
% це коментар
extends
some_package.nested_package1.BaseClass;
implements % І це коментар
some_package.Interface1, some_package.nested_package2.Interface2;
Опис поля має наступний вигляд:
В
[модіфікатори_доступа] <Ім'я_поля>: <тіп_поля> [= <початкове значення>];
Тут модіфікатори_доступа - наступні слова: public, protected, private, final, static, transient, volatile, відповідні прапорам доступу поля ACC_PUBLIC, ACC_PROTECTED, ACC_PRIVATE, ACC_FINAL, ACC_STATIC, ACC_TRANSIENT, ACC_VOLATILE. Повторення однакових модифікаторів доступу в оголошенні одного поля і поєднання модифікаторів, відповідні забороненим сполученням прапорів доступу (див. The Java Virtual Machine Specification), викликають помилку часу компіляції. Поля інтерфейсу обов'язково повинні бути оголошені з модифікаторами public, static і final. Ім'я_поля - коректний ідентифікатор. Тіп_поля - ім'я класу або ім'я примітивного типу (імена примітивних типів збігаються з відповідними ключовими словами мови Java - byte, short, int, long, char, float, double, boolean). Початкове значення може бути задано тільки для статичного поля, якщо...