現在、私はjvmバイトコード命令を試しています。ソースコード(Cスタイルのようなもの)がjvmバイトコード表現を生成する単純なコンパイラを作った。たとえば、次のコード:jvmバイトコードからjavaクラスファイルヘッダを生成する
float x = 3;
float y = 4.5;
float z = x + y;
print z;
はコンパイルに:
ldc 3
i2f
fstore 1
ldc 4.5
fstore 2
fload 1
fload 2
fadd
fstore 3
getstatic java/lang/System/out Ljava/io/PrintStream;
fload 3
invokevirtual java/io/PrintStream/println(F)V
return
(私は生成されたJavaコードは、現在のように、最も効率的ではありません知っているが、それはポイントではありません)。
Javaバイトコードエディタを使用して、コンパイルされたメインクラスをロードし、メインメソッドコードを自分のコードに置き換えました。その後、私はコードを完全にうまく使ってクラスファイルを実行することができました。私の質問は、Javaバイトコードを取り、クラスファイルの適切なヘッダーを生成できるUIを持たないツール/スクリプト(つまり、バイトコードを取り出して有効なクラスファイルを作成する)です。私は自分でスクリプトを書くことができると思うが、それは私が今持っていないかもしれない時間がかかるだろう。
あなたはジャスミンを見ることができます。 –
何らかのコンパイラを作成している場合は、それを有効にして "ヘッダ"自体を生成する必要があります。 [それは魔法ではありません](https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html)。もちろん、[ASM](http://asm.ow2.org/)のようなライブラリを使用してタスクを簡略化することもできます。これは、ある種のテキストに情報を書式設定し、後で別のツールで解析できるようにするよりも優れています。実際には、最初はクラスファイルを生成する方が簡単です。 – Holger