Ответ 1
Хорошей ссылкой для спецификации байт-кода Java является Спецификация виртуальной машины Java.
См. Глава 4. Формат файла класса и Глава 6 Набор инструкций виртуальной машины Java.
Есть ли место для изучения набора инструкций байт-кода JVM. Возможно, спецификация может быть и некоторыми учебниками?
Я спрашиваю, потому что я хотел бы разработать игрушечный язык и компилятор для него, который генерирует байт-код JVM.
Спасибо за ваши знания и, возможно, за поиски.
Хорошей ссылкой для спецификации байт-кода Java является Спецификация виртуальной машины Java.
См. Глава 4. Формат файла класса и Глава 6 Набор инструкций виртуальной машины Java.
Немного более "графическое" объяснение, разработчик IBM работает: Понимание байт-кода делает вас лучшим программистом.
В книге Программирование для виртуальной машины Java объясняется набор инструкций JVM и порядок написания кода для него. Он также вводит ассемблер байт-кода под названием Oolong, который я не смог загрузить. Однако вы можете использовать Jasmin, предшественник Oolong. По сути, вы пишете текстовый файл с инструкциями, а Jasmin выплескивает файл .class. Книга была опубликована в 1999 году, но она по-прежнему является хорошим и нежным знакомством с виртуальной машиной.
Также полезны javap дизассемблер и механизмы управления байт-кодом, такие как ASM и BCEL, даже если все, что вы хотите сделать, это проверить ваши классы.
Спецификация виртуальной машины Java - это хорошее место для начала.
См. главу 4 Формат файла класса. Обновления охватывают новые атрибуты, добавленные со второго выпуска.
Для начала я предлагаю создать Java-код с вашего языка.
Это упростит чтение и отладку.
Возможно, посмотрите Пример Preon о том, как разбирать файл класса Java. Он имеет довольно полное представление байт-кода в объектной модели Java.
Это немного более специализированный, но здесь является онлайновой презентацией о том, как оптимизировать сгенерированный байт-код для работы на JVM. Он был представлен на недавних конференциях JVM Languages Summit. InfoQ имеет коллекцию презентаций на этой конференции, которая может помочь кому-то, кто хочет вывести язык на JVM (или посмотреть, что уже сделано).
Некоторые ресурсы, которые я нашел полезными, когда начали узнавать о байт-коде JVM (извините за самостоятельную ссылку).
http://bytecoded.blogspot.com/2009/01/continuing-with-learning-path-good.html
Вышла новая версия спецификации:
Спецификация виртуальной машины Java, версия Java SE 7
Это новое дополнение исключает главу "Концепции языка Java", которую люди могут или не могут найти полезными. См. здесь для этой главы во втором издании спецификации.