我在大學爲我的彙編語言課程下載了Jasmin JVM。我目前有一些困難。Mac OSX上的Jasmin JVM設置
我該如何寫入.j文件: - 我已經嘗試在textedit和eclipse中編寫文件並將其保存爲.j文件,然後將其移動到目錄中,但它不會讓我從終端運行它。
如果任何人都可以幫助我,或帶領我走向正確的方向,那將不勝感激。
我在大學爲我的彙編語言課程下載了Jasmin JVM。我目前有一些困難。Mac OSX上的Jasmin JVM設置
我該如何寫入.j文件: - 我已經嘗試在textedit和eclipse中編寫文件並將其保存爲.j文件,然後將其移動到目錄中,但它不會讓我從終端運行它。
如果任何人都可以幫助我,或帶領我走向正確的方向,那將不勝感激。
Jasmin是不一個JVM,它是一個Java bytecode彙編。
由於其部署爲JAR你需要的JRE 使用它,但在安裝整個JDK 可能是一個更好的選擇,因爲你要無論如何與Java開發。
要運行它,假設java
是你PATH環境VAR,您可以:
移動到jasmin.jar
所在的目錄,運行
java -jar jasmin.jar <input>
編輯您的CLASSPATH環境變量包含jasmin.jar
文件名,然後運行以上命令任何地方。
爲了全面瞭解您的閱讀一些有關Java class file format ,特別是對各科室更好茉莉的指令:頭,常量池,屬性,方法,字段。
最後您需要了解byte code instructions。
要小心Jasmin不是一個簡單的,低級別的彙編程序。
例如,它從getXXX
和invokeXXX
等指令中完全提取常量池。
也有一些說明有不同的名稱(例如invokenonvirtual
< - >invokespecial
),請參閱here以獲取完整列表。
最後需要詳細瞭解JLS和CLASS文件格式,特別是如何實現泛型和內部類。
簡單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的概述。
方法的代碼實際上是前者的一個屬性。
謝謝,我現在對此更加熟悉。我很好奇你在什麼樣的文本編輯器中編寫茉莉明碼? – rheak
@rheak通常是默認的:Windows上的記事本,KDE上的Kate,OS X上的文本編輯器。使用Jasmin編碼時,我不需要花哨的功能,但我不會每天編寫Java字節碼asm。 –