Ответ 1
Jasmin является стандартом де-факто. Последние версии поддерживают invokedynamic. Он написан на Java, поэтому он переносится.
Я хочу, чтобы простой ассемблер JVM был простым и простым. Он должен взять текстовый файл, написанный на мнемоническом языке, описанный в Спецификации виртуальной машины Java, и создать файлы классов, т.е. Байт-код.
Чтобы быть ясным: я не хочу, чтобы библиотека, которая могла генерировать файлы классов из invocations API.
Каковы текущие статусы ассемблеров JVM? Поддерживают ли они invokedynamic (не обязательно для меня, но преимущество)? На какой операционной системе я могу их использовать? Каковы их личные плюсы и минусы?
Jasmin является стандартом де-факто. Последние версии поддерживают invokedynamic. Он написан на Java, поэтому он переносится.
Прошло некоторое время, и теперь есть альтернатива Jasmin под названием Krakatau.
Из README.txt
:
Ассемблер Krakatau предназначен для замены Jasmin и был первоначально написан из-за ограничений Jasmin. Он в основном обратно совместим с синтаксисом Jasmin, хотя и не обязательно с расширениями, введенными в JasminXT. Тем не менее, Krakatau предлагает множество новых функций, а самое главное - возможность прямого указания постоянных ссылок на пул.
На этот раз кажется, что Krakatau был последний раз обновлен месяц назад, а Jasmin последний раз обновлялся девять лет назад.
Krakatau поддерживает invokedynamic
и использует те же имена команд, которые используются в JVMS.
Krakatau реализован в Python. Лично мне нравятся мои Java-инструменты для реализации на Java, но, учитывая характер этого инструмента (создание файлов классов из источника, отличного от Java), и отсутствие конкуренции в этой нише, я дам ему шанс.