Spec-Zone.ru › Java Virtual Machine Specification 8

Спецификация виртуальной машины Java®

Java SE 8 Edition

Тим Линдхольм

Фрэнк Йеллин

Гилад Браха

Алекс Бакли

2015-02-13

Юридическое уведомление

Оглавление

Предисловие к Java SE 8 Edition
1. Введение
1.1. Немного истории
1.2. Виртуальная машина Java
1.3. Структура спецификации
1.4. Нотация
1.5. Отзывы
2. Структура виртуальной машины Java
2.1. Формат файла class
2.2. Типы данных
2.3. Примитивные типы и значения
2.3.1. Целочисленные типы и значения
2.3.2. Типы с плавающей запятой, множества значений и значения
2.3.3. Тип returnAddress и значения
2.3.4. Тип boolean
2.4. Ссылочные типы и значения
2.5. Области данных во время выполнения
2.5.1. Регистр pc
2.5.2. Стек виртуальной машины Java
2.5.3. Куча
2.5.4. Область методов
2.5.5. Пул констант во время выполнения
2.5.6. Стек методов нативных функций
2.6. Фреймы
2.6.1. Локальные переменные
2.6.2. Стек операндов
2.6.3. Динамическая компоновка
2.6.4. Завершение обычного вызова метода
2.6.5. Завершение вызова метода с ошибкой
2.7. Представление объектов
2.8. Арифметика с плавающей запятой
2.8.1. Арифметика с плавающей запятой виртуальной машины Java и IEEE 754
2.8.2. Режимы с плавающей запятой
2.8.3. Преобразование множества значений
2.9. Специальные методы
2.10. Исключения
2.11. Краткий обзор набора инструкций
2.11.1. Типы и виртуальная машина Java
2.11.2. Инструкции загрузки и сохранения
2.11.3. Арифметические инструкции
2.11.4. Инструкции преобразования типов
2.11.5. Создание и управление объектами
2.11.6. Инструкции управления стеком операндов
2.11.7. Инструкции передачи управления
2.11.8. Инструкции вызова и возврата методов
2.11.9. Генерация исключений
2.11.10. Синхронизация
2.12. Библиотеки классов
2.13. Публичный дизайн, закрытая реализация
3. Компиляция для виртуальной машины Java
3.1. Формат примеров
3.2. Использование констант, локальных переменных и управляющих конструкций
3.3. Арифметика
3.4. Доступ к пулу констант во время выполнения
3.5. Более сложные примеры управления
3.6. Прием аргументов
3.7. Вызов методов
3.8. Работа с экземплярами классов
3.9. Массивы
3.10. Компиляция переключателей
3.11. Операции со стеком операндов
3.12. Генерация и обработка исключений
3.13. Компиляция finally
3.14. Синхронизация
3.15. Аннотации
4. Формат файла class
END_OF_DOCUMENT_MARKER
4.1. Структура ClassFile
4.2. Внутренняя форма имён
4.2.1. Имена бинарных классов и интерфейсов
4.2.2. Неквалифицированные имена
4.3. Дескрипторы
4.3.1. Нотация грамматики
4.3.2. Дескрипторы полей
4.3.3. Дескрипторы методов
4.4. Пул констант
4.4.1. Структура CONSTANT_Class_info
4.4.2. Структуры CONSTANT_Fieldref_info, CONSTANT_Methodref_info и CONSTANT_InterfaceMethodref_info
4.4.3. Структура CONSTANT_String_info
4.4.4. Структуры CONSTANT_Integer_info и CONSTANT_Float_info
4.4.5. Структуры CONSTANT_Long_info и CONSTANT_Double_info
4.4.6. Структура CONSTANT_NameAndType_info
4.4.7. Структура CONSTANT_Utf8_info
4.4.8. Структура CONSTANT_MethodHandle_info
4.4.9. Структура CONSTANT_MethodType_info
4.4.10. Структура CONSTANT_InvokeDynamic_info
4.5. Поля
4.6. Методы
4.7. Атрибуты
4.7.1. Определение и именование новых атрибутов
4.7.2. Атрибут ConstantValue
4.7.3. Атрибут Code
4.7.4. Атрибут StackMapTable
4.7.5. Атрибут Exceptions
4.7.6. Атрибут InnerClasses
4.7.7. Атрибут EnclosingMethod
4.7.8. Атрибут Synthetic
4.7.9. Атрибут Signature
4.7.9.1. Подписи
4.7.10. Атрибут SourceFile
4.7.11. Атрибут SourceDebugExtension
4.7.12. Атрибут LineNumberTable
4.7.13. Атрибут LocalVariableTable
4.7.14. Атрибут LocalVariableTypeTable
4.7.15. Атрибут Deprecated
4.7.16. Атрибут RuntimeVisibleAnnotations
4.7.16.1. Структура element_value
4.7.17. Атрибут RuntimeInvisibleAnnotations
4.7.18. Атрибут RuntimeVisibleParameterAnnotations
4.7.19. Атрибут RuntimeInvisibleParameterAnnotations
4.7.20. Атрибут RuntimeVisibleTypeAnnotations
4.7.20.1. Объединение target_info
4.7.20.2. Структура type_path
4.7.21. Атрибут RuntimeInvisibleTypeAnnotations
4.7.22. Атрибут AnnotationDefault
4.7.23. Атрибут BootstrapMethods
4.7.24. Атрибут MethodParameters
4.8. Проверка формата
4.9. Ограничения на код виртуальной машины Java
4.9.1. Статические ограничения
4.9.2. Структурные ограничения
4.10. Верификация файлов class
4.10.1. Верификация посредством проверки типов
4.10.1.1. Доступ к артефактам виртуальной машины Java
4.10.1.2. Система типов верификации
4.10.1.3. Представление инструкций
4.10.1.4. Представление фрейма карты стека
4.10.1.5. Проверка типов абстрактных и нативных методов
4.10.1.6. Проверка типов методов с кодом
4.10.1.7. Проверка типов инструкций загрузки и сохранения
4.10.1.8. Проверка типов для членов protected
4.10.1.9. Проверка типов инструкций
aaload
aastore
aconst_null
aload, aload_<n>
anewarray
areturn
arraylength
astore, astore_<n>
athrow
baload
bastore
bipush
caload
castore
checkcast
d2f, d2i, d2l
dadd
daload
dastore
dcmp<op>
dconst_<d>
ddiv
dload, dload_<n>
dmul
dneg
drem
dreturn
dstore, dstore_<n>
dsub
dup
dup_x1
dup_x2
dup2
dup2_x1
dup2_x2
f2d, f2i, f2l
fadd
faload
fastore
fcmp<op>
fconst_<f>
fdiv
fload, fload_<n>
fmul
fneg
frem
freturn
fstore, fstore_<n>
fsub
getfield
getstatic
goto, goto_w
i2b, i2c, i2d, i2f, i2l, i2s
iadd
iaload
iand
iastore
if_acmp<cond>
if_icmp<cond>
if<cond>
ifnonnull
ifnull
iinc
iload, iload_<n>
imul
ineg
instanceof
invokedynamic
invokeinterface
invokespecial
invokestatic
invokevirtual
ior
irem
ireturn
ishl, ishr, iushr
istore, istore_<n>
isub
ixor
l2d, l2f, l2i
ladd
laload
land
lastore
lcmp
END_OF_DOCUMENT_MARKER
lconst_<l>
ldc, ldc_w, ldc2_w
ldiv
lload, lload_<n>
lmul
lneg
lookupswitch
lor
lrem
lreturn
lshl, lshr, lushr
lstore, lstore_<n>
lsub
lxor
monitorenter
monitorexit
multianewarray
new
newarray
nop
pop, pop2
putfield
putstatic
return
saload
sastore
sipush
swap
tableswitch
wide
4.10.2. Проверка с помощью вывода типов
4.10.2.1. Процесс проверки с помощью вывода типов
4.10.2.2. Проверяющий байткод
4.10.2.3. Значения типов long и double
4.10.2.4. Методы инициализации экземпляров и только что созданные объекты
4.10.2.5. Исключения и finally
4.11. Ограничения виртуальной машины Java
5. Загрузка, линковка и инициализация
5.1. Пул констант времени выполнения
5.2. Запуск виртуальной машины Java
5.3. Создание и загрузка
5.3.1. Загрузка с помощью загрузчика Bootstrap
5.3.2. Загрузка с помощью пользовательского загрузчика классов
5.3.3. Создание классов массивов
5.3.4. Ограничения загрузки
5.3.5. Получение класса из представления файла class
5.4. Линковка
5.4.1. Проверка
5.4.2. Подготовка
5.4.3. Разрешение
5.4.3.1. Разрешение классов и интерфейсов
5.4.3.2. Разрешение полей
5.4.3.3. Разрешение методов
5.4.3.4. Разрешение методов интерфейса
5.4.3.5. Разрешение типов методов и дескрипторов методов
5.4.3.6. Разрешение спецификатора места вызова
5.4.4. Управление доступом
5.4.5. Переопределение
5.5. Инициализация
5.6. Связывание реализаций нативных методов
5.7. Выход из виртуальной машины Java
6. Набор инструкций виртуальной машины Java
6.1. Предположения: Значение "должен"
6.2. Зарезервированные опкоды
6.3. Ошибки виртуальной машины
6.4. Формат описаний инструкций
mnemonic
6.5. Инструкции
END_OF_DOCUMENT_MARKER
aaload
aastore
aconst_null
aload
aload_
anewarray
areturn
arraylength
astore
astore_
athrow
baload
bastore
bipush
caload
castore
checkcast
d2f
d2i
d2l
dadd
daload
dastore
dcmp
dconst_
ddiv
dload
dload_
dmul
dneg
drem
dreturn
dstore
dstore_
dsub
dup
dup_x1
dup_x2
dup2
dup2_x1
dup2_x2
f2d
f2i
f2l
fadd
faload
fastore
fcmp
fconst_
fdiv
fload
fload_
fmul
fneg
frem
freturn
fstore
fstore_
fsub
getfield
getstatic
goto
goto_w
i2b
i2c
i2d
i2f
i2l
i2s
iadd
iaload
iand
iastore
iconst_
idiv
if_acmp
if_icmp
if
ifnonnull
ifnull
iinc
iload
iload_
imul
ineg
instanceof
invokedynamic
invokeinterface
invokespecial
invokestatic
invokevirtual
ior
irem
ireturn
ishl
ishr
istore
istore_<n>
isub
iushr
ixor
jsr
jsr_w
l2d
l2f
l2i
ladd
laload
land
lastore
lcmp
lconst_<l>
ldc
ldc_w
ldc2_w
ldiv
lload
lload_<n>
lmul
lneg
lookupswitch
lor
lrem
lreturn
lshl
lshr
lstore
lstore_<n>
lsub
lushr
lxor
monitorenter
monitorexit
multianewarray
new
newarray
nop
pop
pop2
putfield
putstatic
ret
return
saload
sastore
sipush
swap
tableswitch
wide
7. Мемоиники OPCODE по OPCODE
Индекс
A. Ограниченное предоставление лицензии

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API