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




Хорошей ссылкой на спецификацию байт-кода Java является Спецификация виртуальной машины Java.
См. Глава 4. Формат файла класса и Глава 6. Набор инструкций виртуальной машины Java.
Еще немного «графическое» объяснение, работает разработчик IBM: Понимание байт-кода делает вас лучшим программистом.
Это немного более специализировано, но здесь - это онлайн-презентация о том, как оптимизировать сгенерированный байт-код для работы на JVM. Он был представлен на недавних конференциях Саммит языков JVM. В InfoQ есть сборник презентаций с этой конференции, что может помочь тем, кто хочет использовать язык в JVM (или посмотреть, что уже было сделано).
В книге Программирование для виртуальной машины Java объясняется набор инструкций JVM и как писать для него код. Он также представляет ассемблер байт-кода под названием Oolong, который мне не удалось загрузить. Однако вы можете использовать Жасмин, предшественника Oolong. По сути, вы пишете текстовый файл с инструкциями, а Jasmin выдаст файл .class. Книга была опубликована в 1999 году, но по-прежнему представляет собой хорошее и мягкое введение в виртуальную машину.
Jasmin не обслуживается и не поддерживает многие функции файлов классов. Я бы рекомендовал вместо этого использовать Krakatau Assembler, который обратно совместим с Jasmin, но гораздо более мощный. (Раскрытие: я написал это).
Для начала я предлагаю сгенерировать код Java на вашем языке.
Это значительно упростит чтение и отладку.
Спецификация виртуальной машины Java - хорошее место для начала.
См. Главу 4 Формат файла класса. Обновления охватывают новые атрибуты, добавленные после выпуска 2-го издания.
Возможно, посмотрите Пример Преона о том, как анализировать файл класса Java. Он имеет достаточно полное представление байт-кода в объектной модели Java.
Ссылка мертва: хранилища с таким названием нет.
Спасибо GKFX, исправил.
Вышла новая версия спецификации:
Спецификация виртуальной машины Java, Java SE 7 Edition
Это новое дополнение исключает главу о Концепции языка программирования Java, которая может оказаться полезной, а может и не оказаться. См. здесь для этой главы во втором издании спецификации.
Вам нужно смотреть на спецификацию JVM, а не на другую