Спецификация байт-кода Java

Есть ли хорошее место для изучения набора инструкций байт-кода JVM. Возможно, спецификация и, может быть, несколько руководств?

Я спрашиваю, потому что хотел бы разработать игрушечный язык и компилятор для него, который генерирует байт-код JVM.

Спасибо за ваши знания и, возможно, поиск в Google.

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
34
0
10 236
9

Ответы 9

Хорошей ссылкой на спецификацию байт-кода Java является Спецификация виртуальной машины Java.

См. Глава 4. Формат файла класса и Глава 6. Набор инструкций виртуальной машины Java.

Вам нужно смотреть на спецификацию JVM, а не на другую

RobotHumans 07.08.2012 03:24

Также полезны дизассемблер javap и фреймворки манипулирования байт-кодом, такие как КАК М и BCEL, даже если все, что вам нужно сделать, это проверить свои классы.

Еще немного «графическое» объяснение, работает разработчик IBM: Понимание байт-кода делает вас лучшим программистом.

Это немного более специализировано, но здесь - это онлайн-презентация о том, как оптимизировать сгенерированный байт-код для работы на JVM. Он был представлен на недавних конференциях Саммит языков JVM. В InfoQ есть сборник презентаций с этой конференции, что может помочь тем, кто хочет использовать язык в JVM (или посмотреть, что уже было сделано).

В книге Программирование для виртуальной машины Java объясняется набор инструкций JVM и как писать для него код. Он также представляет ассемблер байт-кода под названием Oolong, который мне не удалось загрузить. Однако вы можете использовать Жасмин, предшественника Oolong. По сути, вы пишете текстовый файл с инструкциями, а Jasmin выдаст файл .class. Книга была опубликована в 1999 году, но по-прежнему представляет собой хорошее и мягкое введение в виртуальную машину.

Jasmin не обслуживается и не поддерживает многие функции файлов классов. Я бы рекомендовал вместо этого использовать Krakatau Assembler, который обратно совместим с Jasmin, но гораздо более мощный. (Раскрытие: я написал это).

Antimony 03.03.2013 00:24

Для начала я предлагаю сгенерировать код Java на вашем языке.

Это значительно упростит чтение и отладку.

Спецификация виртуальной машины Java - хорошее место для начала.

См. Главу 4 Формат файла класса. Обновления охватывают новые атрибуты, добавленные после выпуска 2-го издания.

Возможно, посмотрите Пример Преона о том, как анализировать файл класса Java. Он имеет достаточно полное представление байт-кода в объектной модели Java.

Ссылка мертва: хранилища с таким названием нет.

GKFX 24.10.2013 20:13

Спасибо GKFX, исправил.

Wilfred Springer 25.10.2013 12:10

Вышла новая версия спецификации:

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

Это новое дополнение исключает главу о Концепции языка программирования Java, которая может оказаться полезной, а может и не оказаться. См. здесь для этой главы во втором издании спецификации.

Другие вопросы по теме