Какие JVM-ассемблеры существуют?

Я хочу, чтобы простой ассемблер JVM был простым и простым. Он должен взять текстовый файл, написанный на мнемоническом языке, описанный в Спецификации виртуальной машины Java, и создать файлы классов, т.е. Байт-код.

Чтобы быть ясным: я не хочу, чтобы библиотека, которая могла генерировать файлы классов из invocations API.

Каковы текущие статусы ассемблеров JVM? Поддерживают ли они invokedynamic (не обязательно для меня, но преимущество)? На какой операционной системе я могу их использовать? Каковы их личные плюсы и минусы?

Ответ 1

Jasmin является стандартом де-факто. Последние версии поддерживают invokedynamic. Он написан на Java, поэтому он переносится.

Ответ 2

Прошло некоторое время, и теперь есть альтернатива Jasmin под названием Krakatau.

Из README.txt:

Ассемблер Krakatau предназначен для замены Jasmin и был первоначально написан из-за ограничений Jasmin. Он в основном обратно совместим с синтаксисом Jasmin, хотя и не обязательно с расширениями, введенными в JasminXT. Тем не менее, Krakatau предлагает множество новых функций, а самое главное - возможность прямого указания постоянных ссылок на пул.

На этот раз кажется, что Krakatau был последний раз обновлен месяц назад, а Jasmin последний раз обновлялся девять лет назад.

Krakatau поддерживает invokedynamic и использует те же имена команд, которые используются в JVMS.

Krakatau реализован в Python. Лично мне нравятся мои Java-инструменты для реализации на Java, но, учитывая характер этого инструмента (создание файлов классов из источника, отличного от Java), и отсутствие конкуренции в этой нише, я дам ему шанс.