2011-05-30 73 views
11

我想要一個簡單直接的JVM彙編程序。它應該採用The Java Virtual Machine Specification中描述的助記符語言編寫的文本文件,並生成類文件,即字節碼。有什麼JVM彙編器?

要清楚:我不想要一個可以通過調用API來生成類文件的庫。

什麼是JVM彙編程序的當前狀態?他們是否支持invokedynamic(對我而言不是強制性的,而是一種優勢)?我可以在什麼操作系統上使用它們?他們個人的優點和缺點是什麼?

+1

請注意,JVM規範不**提供完整的語言來構建完整的'類'文件。它確實包含字節碼,但不包含必要的「管道」(例如,如何聲明方法,如何在「程序集」中寫入類層次結構......)。所以任何JVM彙編器都需要「發明」這一點。 – 2011-05-30 13:19:19

+0

@Joachim這是一個很好的觀點。任何創意管道對我來說都行。 – 2011-05-30 13:20:53

回答

7

Jasmin是事實上的標準。最近的版本支持invokedynamic。它是用Java編寫的,所以它是可移植的。

9

一段時間已經過去了,現在有一個替代Jasmin的叫做Krakatau

README.txt

喀拉喀託彙編旨在爲茉莉更換,最初寫由於茉莉的侷限性。它大多向後兼容Jasmin的語法,但不一定與JasminXT中引入的擴展。但是,Krakatau提供了許多新功能,最重要的是可以直接指定常量池引用。

此時,看起來Krakatau最近一個月前更新了,Jasmin最近更新了九年前。

Krakatau確實支持invokedynamic並使用與JVMS中使用的相同的指令名稱。

Krakatau在Python中實現。就我個人而言,我喜歡用Java實現我的Java工具,但鑑於此工具的性質(構建來自非Java源的類文件)以及該細分市場中缺乏競爭,我會給它一個機會。

+1

僅供參考,還有[此項目](https://github.com/alexkasko/krakatau-java),它使用Jython以更適合Java開發人員的形式呈現Krakatau。 – daveloyall 2014-04-01 21:36:23

相關問題