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

Здесь:

· access_flags - комбинация битовых флагов, определяющих права доступа и некоторые другие характерист ики поля:

Имя флага Значение Смысл
ACC_PUBLIC 0x0001 Поле объявлено как public
ACC_PRIVATE 0x0002 Поле объявлено как private
ACC_PROTECTED 0x0004 Поле объявлено как protected
ACC_STATIC 0x0008 Поле является статическим
ACC_FINAL 0x0010 Поле объявлено как final и не может быть изменено после начальной инициализации
ACC_VOLATILE 0x0040 Поле объявлено как volatile
ACC_TRANSIENT 0x0080 Поле объявлено как transient – не сохранятся при сериализации

· name_index – индекс строковой константы-имени поля в ConstantPool;

· descriptor_index – индекс строковой константы-дескриптора поля (описывает тип) в ConstantPool;

· attributes_count – число атрибутов поля;

· attributes – атрибуты поля. К полям могут быть применены стандартные атрибуты Deprecated (см. выше), Synthetic (поле создано компилятором и не объявлено явно в исходном тексте) и ConstantValue (инициализирующее значение для статического поля).

Формат структуры method_info

Структура method_info имеет следующий формат:

}

Здесь:

· access_flags – битовые флаги, определяющие права доступа и некоторые дополнительные свойства метода:

Flag Name Value Interpretation
ACC_PUBLIC 0x0001 Метод объявлен как public
ACC_PRIVATE 0x0002 Метод объявлен как private
ACC_PROTECTED 0x0004 Метод объявлен как protected
ACC_STATIC 0x0008 Метод является статическим
ACC_FINAL 0x0010 Метод является финальным и не может быть замещен
ACC_SYNCHRONIZED 0x0020 Метод объявлен как synchronized
ACC_NATIVE 0x0100 Метод является «родным» и содержит код, непосредственно выполняющийся физическим процессором
ACC_ABSTRACT 0x0400 Метод является абстрактным
ACC_STRICT 0x0800 Устанавливает «строгий» режим работы с вещественными числами (только в Java 2).

· name_index, descriptor_index, attributes_count – аналогично field_info;

· attributes – атрибуты метода. Методы могут иметь следующие стандартные атрибуты:

o Deprecated, Synthetic – аналогично соответствующим атрибутам полей;

o Exceptions – описание исключений, которые может генерировать метод. Нужно отметить, что обязательное описание исключений не является необходимым требованием для корректного выполнения;

o Code – собственно говоря, байт-код метода.

Формат атрибута Code.

Атрибут Code имеет следующую структуру:

Code _ attribute { u2 attribute_name_index; }

Здесь:

· attribute_name_index, attribute_length – стандартные для любого атрибута поля, описывающие его тип и размер;

· max_stack – предельный размер стека операндов для метода;

· max_locals – предельное количество локальных переменных метода (включая формальные параметры);

· code_length – размер байт-кода метода в байтах;

· code – собственно говоря, байт-код;

· exception_table_length – количество защищенных блоков;

· exception_table – таблица защищенных блоков (обработчиков исключений). Каждая ее запись имеет следующие поля:

o start_pc – индекс начала защищенного блока в массиве байт-кода,

o end_pc – индекс конца защищенного блока,

o handler_pc – индекс начала обработчика,

o catch_type – тип обрабатываемого исключения (индекс в ConstantPool) или 0 для блока try ... finally;

· attributes_count – числоатрибутов;

· attributes – атрибуты кода метода. Могут использоваться стандартные атрибуты LineNumberTable и LocalVariableTable, содержащие отладочную информацию.

Работа JVM

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