Jasmin
Jasmin 是一自由軟體的 JAVA 組合語言 ,可用於設計 class(類別)檔如同以JAVA 語言設計的相同與運用,但更可以得以深入了解 JAVA 語言與 PC 之間的運作模式與方法。Jasmin 程式的編譯與設計,仍是以易讀性為考量來設計,其適合熟悉 JAVA 語言與略懂 C/C++ 語法的程式設計師,如同 assembler-like 語法以 Java Virtual Machine (JVM) 架構與程序設計書為核心;但是 Jasmin 仍不同於 Java 程式語言的編譯 (Compiler Programing) 方式,而是以類似 C++ compiler 的方式來組譯 (assembler) 與連結(linker)。
開發者 | Jonathan Meyer, Troy Downing and Daniel Reynaud |
---|---|
操作系统 | JVM |
类型 | Computer Programming |
许可协议 | GNU General Public License |
网站 | Sourceforge.Net |
Jasmin 的編寫以類似 assembler-like 語法,其語言設計簡潔與易讀,編譯完成後會被轉成為一中間碼 (bytecode) 的 JVM Class 檔,可用於 Java 即時系統 (Java runtime system).
編譯完成後會形成二種接進低階檔案格式即 Java classes (Class) 檔與 Java Archive (JAR) 檔為主,軟體主要網址為 tinapoc (页面存档备份,存于)
Jasmin 範例
傳統以 HelloWorld 程式來開場:
.class public HelloWorld .super java/lang/Object .method public static main([Ljava/lang/String;)V .limit stack 2 .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 examples\HelloWorld.j [Windows] 或 java -jar jasmin.jar examples/HelloWorld.j [Unix/Mac OS X]
歷史
Jon Meyer 與 Troy Downing 兩位為開發 Jasmin 程式的主要人物,他們並共同出版了名為 "JAVA 虚擬機器"(台灣歐萊禮 ISBN 957-8247-50-8)的書籍 "Java Virtual Machine" (Oreilly ISBN 1-56592-194-1)。註1
由 Jon Meyer 開發的版本僅到 1.1 版 (Oct. 21, 2004),而隨後由業餘人士接手開發與維護,而在 Daniel Reynaud 維護版本至 2.0 (Dec. 2, 2005) 時產生一延伸計劃 JasminXT (页面存档备份,存于) ,即前述的 Tinapoc 但開發版僅至 0.4 alpha版本而已,整體說明文件仍是連結於 Jasmin 網頁可以參考 JasminXT (页面存档备份,存于),而在 sourceforge 的 Tinapoc 開發網頁上則是無任何文件留存,僅二行文字說明 "Tinapoc Is Not Another Pun On Coffee" 與 "(and there is no J in it !)" 而已。目前有另一延伸計劃 SPOOFAX-JASMIN (页面存档备份,存于),是一延伸 JasminXT 計劃,而維護轉放到 Github (页面存档备份,存于)。
Jasmin 目前提供了 164 個指令,內容包涵了相同於程式語言的類別、例外、運算子、資料處理、數學處理與執行緒等。程 式本身的編輯可使用一般 的文字處理軟體來編寫(如:記事本,UltraEdit 或高階的程式編寫用的 IDE 介面軟體亦可)。編寫完成後的檔案必需命名以 ".j" 為結尾才可以作為組譯時使用,以運作於 Java 的虛擬機器內。
Jasmin 目前仍是定訂為 SourceForge 組織內部的 Open Source project. Project 維護最新維護時間 Apr. 29, 2013 但軟體檔案維護仍是 2.4 版 (May 7, 2010)。
註1:目前該書中文繁體版本已絕版,但目前仍有些二手書於市面交易。
参考
- Java bytecode
- the Java .class file format
- C to Java Virtual Machine compilers
- ARM9E,a CPU family with direct Java bytecode execution ability
- Common Intermediate Language (CIL), a similar bytecode specification that runs on the CLR of the .NET Framework。
- Compiler
- Disassembler
- List of assemblers
- Instruction set
- Microassembler
書籍
- Jon Meyer: Java Virtual Machine. O'Reilly Associates, 1st Edition March 1997. ISBN 978-1-56592-194-8
外部連結
- Jasmin Official page at Sourceforge* JaminXT Syntax(页面存档备份,存于)
- Spoofax-Jasmin(页面存档备份,存于)
- Sun's Java Virtual Machine Specification(页面存档备份,存于)
- Jasmin instructions (页面存档备份,存于)
- Publisher of "Java Virtual Machine" (页面存档备份,存于)
- personal website of Jon Meyer (页面存档备份,存于)
- Programming Languages for the Java Virtual Machine(页面存档备份,存于)
- Organization for Java Technology Specification (页面存档备份,存于)
- Jasmin - Java Assembler Interpreter