2016-09-13 99 views
1

我在大學爲我的彙編語言課程下載了Jasmin JVM。我目前有一些困難。Mac OSX上的Jasmin JVM設置

我該如何寫入.j文件: - 我已經嘗試在textedit和eclipse中編寫文件並將其保存爲.j文件,然後將其移動到目錄中,但它不會讓我從終端運行它。

如果任何人都可以幫助我,或帶領我走向正確的方向,那將不勝感激。

回答

3

Jasmin一個JVM,它是一個Java bytecode彙編。

由於其部署爲JAR你需要的JRE 使用它,但在安裝整個JDK 可能是一個更好的選擇,因爲你要無論如何與Java開發。

要運行它,假設java是你PATH環境VAR,您可以:

  1. 移動到jasmin.jar所在的目錄,運行

    java -jar jasmin.jar <input> 
    
  2. 編輯您的CLASSPATH環境變量包含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上的文本編輯器。使用Jasmin編碼時,我不需要花哨的功能,但我不會每天編寫Java字節碼asm。 –