2016-09-13 14 views
1

私は大学で私のアセンブリ言語コースのJasmin JVMをダウンロードしました。私は現在、いくつかの困難を抱えています。Mac OSX上のJasmin JVMセットアップ

にはどうすればファイルを.J書きください: - 私は、テキストエディットでファイルを書き込むとEclipseと.Jファイルとして保存し、ディレクトリにそれを移動しようとしているが、それは文句を言わない私には、端末からそれを実行してみましょう。

誰かが私を助けたり、正しい方向に私を導いてくれれば、それは非常に感謝しています。

答えて

3

JasminJVMではない、それはJava bytecodeアセンブラです。それはJARとして展開されているので

はあなたがとにかくのJavaを使って開発しようとしているので、しかし全体JDK がより良い選択かもしれインストールし、JRE はそれを使用する必要があります。それを実行するには

javaと仮定すると次のことができ、あなたのPATH環境VARである:

  1. jasmin.jarが置かれているディレクトリに移動して、あなたのCLASSPATH

    java -jar jasmin.jar <input> 
    
  2. 編集]を実行します環境変数jasmin.jarのファイル名を含めるには、上記のコマンドを実行してください。どこでも。ヘッダ、定数プール、属性、メソッド、フィールド:完全にあなたが特にさまざまなセクションについては、Java class file format について何かを読み取る優れているジャスミンのディレクティブを理解するために


最後にbyte code instructionsを学ぶ必要があります。

Jasminは単純な低レベルのアセンブラではないことに注意してください。
例えば、getXXXinvokeXXXのような命令から定数プールを完全に抽象化します。
また、一部の手順には異なる名前があります(例:invokenonvirtual < - >invokespecial)。詳しくはhereをご覧ください。

最後JLSCLASSファイルフォーマットの固体知識は、具体的にはジェネリックとインナークラスが実装されている方法で、必要です。


このクラスはコンストラクタを持っていないという単純なhelloworld.j

.bytecode 51.0          ;Java 7 
.class public helloworld 
.super java/lang/Object 



.method public static main([Ljava/lang/String;)V 
    .limit stack 2    ;Max stack depth 
    .limit locals 1   ;Locals + args = 0 + 1 = 1 

    getstatic java/lang/System/out Ljava/io/PrintStream;     
    ;Stack: System.out object 

    ldc "Hello world!"              
    ;Stack: System.out object, string 

    invokevirtual java/io/PrintStream/println(Ljava/lang/String;)V   
    ;Stack:/

    return 
.end method 

注意。

あなたは

java -jar jasmin.jar helloworld.j 
java helloworld 

Javaアプリケーションを実行するためのバイナリのセットでこのプログラムをアセンブルし、実行することができます。
Javaアプリケーションを開発するための一連のバイナリです。これにはJREが含まれます。
Wikipediaの概要。
メソッドのコードは、実際には前者の属性です。

+0

ありがとう、私は今これにもっと慣れて感じる。どのようなテキストエディタにジャスミンコードを書いているのですか? – rheak

+0

@rheak通常、デフォルトのもの:Windowsではメモ帳、KDEではkate、OS Xではテキストエディタです。ジャスミンでコーディングするときにはファンシーな機能は必要ありませんが、毎日Javaバイトコードを書きません。 –

関連する問題