11

.NET プラットフォームでは、共通中間言語で直接プログラムを作成し、IL アセンブラー (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
}

.NET のように直接 Java バイトコード命令でプログラムを作成することは可能ですか?

4

2 に答える 2

7

ジャスミンを見ることができます。ウィキペディアから、

一部のプロジェクトでは、Java アセンブラを提供して、Java バイトコードを手動で記述できるようにしています。アセンブリ コードは、Java 仮想マシンをターゲットとするコンパイラなど、マシンによって生成されることもあります。注目すべきJavaアセンブラには次のものがあります。

Jasminは、Java 仮想マシン命令セットを使用して単純なアセンブリのような構文で記述された Java クラスのテキスト記述を取得し、Java クラス ファイルを生成します。

Jamaica (Java 仮想マシン用のマクロ アセンブリ言語)。クラスまたはインターフェースの定義には Java 構文が使用されます。メソッド本体は、バイトコード命令を使用して指定されます。

注: これらのツールを個人的に使用したことはありません。

于 2012-12-30T16:15:28.350 に答える
6

ジャスミン使えよ

 .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

これも参照できます

于 2012-12-30T16:24:21.290 に答える