Возможно ли написать программу с инструкциями по байт-коду Java напрямую?

В платформе .NET можно напрямую написать программу с Common Intermediate Language и скомпилировать источники с помощью IL Assembler (ILASM).

Например, ниже код - это программа Hello World.

.assembly Hello {}
.assembly extern mscorlib {}
.method static void Main()
{
    .entrypoint
    .maxstack 1
    ldstr "Hello, world!"
    call void [mscorlib]System.Console::WriteLine(string)
    ret
}

Возможно ли написать программу с инструкциями байт-кода Java напрямую, как .NET?

Ответ 1

Вы можете проверить Джасмин. Из Википедии,

Некоторые проекты предоставляют Java-ассемблеры, позволяющие вручную писать байт-код Java. Код сборки также может быть сгенерирован машиной, например, с помощью таргетинга на виртуальную машину Java. Известные сборщики Java включают в себя:

Jasmin, принимает текстовые описания для классов Java, написанные в простом ассемблерном синтаксисе с использованием набора инструкций Java Virtual Machine и генерирует файл класса Java.

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

Примечание. Я не использовал ни один из этих инструментов лично.

Ответ 2

Вы можете использовать Jasmin

 .class public HelloWorld
 .super java/lang/Object

 .method public static main([Ljava/lang/String;)V
 .limit stack 3
 .limit locals 1

  getstatic      java/lang/System/out Ljava/io/PrintStream;
  ldc            "Hello World."
  invokevirtual  java/io/PrintStream/println(Ljava/lang/String;)V

 return

.end method

Скомпилируйте его, используя:

java -jar jasmin.jar hello.j

Вы можете также ссылаться на