Спецификация Виртуальной Машины языка Ява

The Java(tm) Virtual Machine Specification


Содержание

Информация об авторских правах

Предисловие

1 Архитектура виртуальной машины языка Ява

1.1 Поддерживаемые типы данных
1.2 Регистры
1.3 Локальные переменные
1.4 Стек операндов
1.5 Среда выполнения
1.6 Куча и сборщик мусора
1.7 Область метода
1.8 Набор инструкций Ява
1.9 Ограничения

2 Формат файла класса

2.1  Формат
2.2  Сигнатуры
2.3  Константный пул
2.4  Поля
2.5  Методы
2.6  Атрибуты

3 Набор инструкций виртуальной машины

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  Табличный переход
3.14  Управление полями объектов
3.15  Вызов метода
3.16  Обработка исключений
3.17 Прочие операции с объектами
3.18  Мониторы

Приложение A: Оптимизация

А.1  Обработка константного пула
А.2  Помещение констант на стек (quick варианты)
А.3 Управление массивами (quick варианты)
А.4 Управление объектными полями (quick варианты)
А.5 Вызов метода (quick варианты)
А.6 Различные операции с объектами(quick варианты)

Информация об авторских правах


© 1993, 1994, 1995 Sun Microsystems, Inc.

2550 Garcia Avenue, Mountain View, California 94043-1100 U.S.A.

Все права защищены. Эта БЕТА-версия и связанная документация защищены авторским правом и распространяются согласно лицензиям, ограничивающим использование, копирование, распространение, и декомпиляцию. Ни одна часть этого материала или связанной документации не может быть воспроизведена в любой форме любыми средствами без письменного разрешения Sun и ее лицензоров.

Части этого продукта являются произведены с помощью систем UNIX® и Berkeley 4.3 BSD, лицензированных UNIX System Laboratories и University of California, соответственно. Шрифтовое программное обеспечение третьих лиц в этом издании защищено авторским правом и лицензировано поставщиками шрифтов Sun.

ОГРАНИЧЕНИЕ ПРАВ: Использование, дублирование, или раскрытие правительством Соединенных Штатов подчиненны ограничениям, сформулированным в DFARS 252.227-7013 (C) (1) (ii) и FAR 52.227-19.

Версия, описанная в этом руководстве может быть защищена одним или более патентами США, иностранными патентями или поданными заявками.

ТОРГОВЫЕ МАРКИ

Sun, Sun Microsystems, Sun Microsystems Computer Corporation, эмблема Sun, эмблема Sun Microsystems Computer Corporation, WebRunner, Java, эмблема FirstPerson и FirstPerson торговые марки или зарегистрированные торговые марки Sun Microsystems. Символ "Duke"-торговая марка Sun Microsystems и Copyright (c) 1992-1995 Sun Microsystems. All Rights Reserved. UNIX®-зарегистрированная торговая марка как в Соединенных Штатах так и в других странах, лицензируемая исключительно через X/Open Company, Ltd. OPEN LOOK - зарегистрированная торговая марка Novell. Все другие имена этого выпуска упомянутые здесь-торговые марки соответствующих владельцев.

Все торговые марки SPARC, включая эмблему SCD, являются торговыми марками или зарегистрированными торговыми марками SPARC International. SPARCstation, SPARCserver, SPARCengine, SPARCworks, и SPARCompiler залицензированы исключительно Sun Microsystems. Продукты, имеющие торговые марки SPARC, основаны на архитектуре, развитой компанией Sun Microsystems.

X Window System - торговая марка и продукт Massachusetts Institute of Technology.

ЭТА ПУБЛИКАЦИЯ ПРЕДОСТАВЛЯЕТСЯ "КАК ЕСТЬ" БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ, ПРЯМЫХ ИЛИ ПОДРАЗУМЕВАЕМЫХ, ВКЛЮЧАЯ, НО НЕ ОГРАНИЧИВАЯСЬ, ПОДРАЗУМЕВАЕМЫМИ ГАРАНТИЯМИ КОММЕРЧЕСКОЙ ЦЕННОСТИ, ПРИГОДНОСТИ ДЛЯ СПЕЦИФИЧЕСКИХ ЦЕЛЕЙ, ИЛИ НЕНАНЕСЕНИЯ УЩЕРБА.

ЭТА ПУБЛИКАЦИЯ МОЖЕТ СОДЕРЖАТЬ ТЕХНИЧЕСКИЕ ПОГРЕШНОСТИ ИЛИ ТИПОГРАФИЧЕСКИЕ ОШИБКИ. ВСЕ ИЗМЕНЕНИЯ ПЕРИОДИЧЕСКИ ДОБАВЛЯЮТСЯ К ЭТОЙ ИНФОРМАЦИИ; ЭТИ ИЗМЕНЕНИЯ БУДУТ ВКЛЮЧЕНЫ В НОВЫЕ ИЗДАНИЯ. КОМПАНИЯ SUN MICROSYSTEMS В ЛЮБОЕ ВРЕМЯ МОЖЕТ СДЕЛАТЬ УСОВЕРШЕНСТВОВАНИЯ И/ИЛИ ИЗМЕНЕНИЯ ПРОДУКТА И/ИЛИ ПРОГРАММ, ОПИСАННОЙ В ЭТОЙ ПУБЛИКАЦИИ.

Предисловие

Этот документ описывает версию 1.0 виртуальной машины языка Ява и ее набор команд. Мы написали этот документ для использования его в качестве основного для разработчиков компиляторов, которые желают использовать машину, и как инструкцию для тех, кто сам захочет реализовать виртуальную машину языка Ява.

Виртуальная машина языка Ява является мнимой машиной, которая реализуется программной эмуляцией  на реальной машине. Код виртуальной машины языка Ява записывается в .class файлах, каждый из которых в большинстве случаев содержит код одного public-класса.

Возможны простые и эффективные эмуляции виртуальной машины языка Ява, потому что машинный формат - компактный и эффективный байткод. Также возможна реализация, которая по скорости сравнима с машинным кодом, получаемым компиляцией с языка Cи, путем трансляции байткодов в код машины, хотя Sun не располагает такой реализацией в настоящее время.

Остальная часть этого документа структурирована следующим образом:

Торговая марка и  логотип Java Virtual Machine будут лицензированы фирмой Sun для корректных реализаций этой спецификации. Если Вы написали собственную виртуальную машину языка Ява, пожалуйста, войдите в контакт с нами по адресу, приведенному ниже, чтобы мы могли вместе работать над 100 % совместимостью вашей реализации.

Пришлите комментарии относительно этого описания или вопросы относительно реализации виртуальной машины языка Ява по адресу нашей электронной почты: java@java.sun.com.