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)。

Jasmin 的編寫以類似 assembler-like 語法,其語言設計簡潔與易讀,編譯完成後會被轉成為一中間碼 (bytecode) 的 JVM Class 檔,可用於 Java 即時系統 (Java runtime system).

編譯完成後會形成二種接進低階檔案格式即 Java classes (Class) 檔與 Java Archive (JAR) 檔為主,軟體主要網址為 [http://sourceforge.net/projects/tinapoc 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

編譯方式
相關編譯使用方法如下:

  • Windows: java -jar jasmin.jar examples\HelloWorld.j
  • Unix/Mac OS X: java -jar jasmin.jar examples/HelloWorld.j

歷史
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 [http://jasmin.sourceforge.net/xt.html] ,即前述的 Tinapoc 但開發版僅至 0.4 alpha版本而已,整體說明文件仍是連結於 Jasmin 網頁可以參考 JasminXT [http://jasmin.sourceforge.net/xt.html] ,而在 sourceforge 的 Tinapoc 開發網頁上則是無任何文件留存,僅二行文字說明 "Tinapoc Is Not Another Pun On Coffee" 與 "(and there is no J in it !)" 而已。目前有另一延伸計劃 SPOOFAX-JASMIN [https://github.com/metaborg/spoofax-jasmin],是一延伸 JasminXT 計劃,而維護轉放到 Github [https://github.com]。

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

外部連結

评论 (0)

  • 还没有评论,来抢沙发吧。