Javaバイトコードで短いプログラム(おそらくHello World)を書きたいと思っています。テキストエディタを使用してバイトコードを書き、実行したいだけです。どうすればよいですか?例?ありがとう!
あなたは試すことができます ジャスミン !
.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
そして、あなたはそれを他のクラスのように実行します:
> Java HelloWorld HelloWorld。
更新
あなたの質問は「JavacやJavaを使わずに」と言っているようです。その声明の意味を明確にしていただけますか?
新しい Javaバイトコードアセンブラ を作成しました。これは、Jasminと下位互換性がありますが、多くの新機能を追加し、構文をわずかに簡略化します。
これは、HelloWorldプログラムを作成する方法の例です。
.class public hello
.super Java/lang/Object
.method public static main : ([Ljava/lang/String;)V
.limit stack 10
.limit locals 10
getstatic Java/lang/System out Ljava/io/PrintStream;
ldc "Hello World!"
invokevirtual Java/io/PrintStream println (Ljava/lang/Object;)V
return
.end method
バイトコードアセンブリに関するチュートリアルも書きました 。現在はHello、Worldのみをカバーしていますが、興味があれば続行できます。
バイトコードは実際のバイトとして書き込まれますが、通常のテキストエディターでは簡単に編集できません。
これは、テキスト表現をバイナリに変換するものが必要になることを意味します。開始するのに妥当な場所は、 Jasmin のようなアセンブラーです。
[〜#〜] jbe [〜#〜] (Javaバイトコードエディタ)を検討しましたか?
これは、Apacheのバイトコードエンジニアリングライブラリに基づいています( [〜#〜] bcel [〜#〜] )
多分この記事があなたを始めるのに役立つかもしれません: Bytecode basics (少し古いが、あなたはアイデアを得るでしょう).
クラスファイル形式 も便利です:D
この男は、HelloWorldプログラムのクラスファイルを作成するプロセスを段階的に説明します。かなりエキサイティングなもの:-) https://medium.com/@davethomas_9528/writing-hello-world-in-Java-byte-code-34f75428e0ad