2015-04-02 72 views
0

我正在編寫自己的小編程語言,編寫成java字節碼作爲我的畢業作品,並且在最後一部分字節碼生成時遇到麻煩。我已經爲它搜索了一些庫,甚至用ASM庫編寫了一些代碼,但是我對這個庫很不滿意,因爲那個事件/訪問者(我不知道如何正確調用它)基於架構破壞了我的大腦。所以我需要:Java字節碼生成

  • 我只需要生成Java字節碼。因爲我看了很多比較談論轉換,我不需要它。
  • 我需要了解字節碼和JVM是如何工作的。
  • 性能沒有什麼大不了的。它應該是可以接受的。

那麼,什麼java字節碼生成庫更適合我的情況呢?

P.S.另外,我想說,我並不完全拒絕ASM,也許它很好,但在這種情況下,我需要一些東西來理解這種架構,因爲現在我無法想象如何正確地使用它。

+0

請參閱http://docs.oracle.com/javase/specs/jvms/se8/html/index.html,特別是[第3章](http://docs.oracle.com/javase/specs/jvms/ se8/html/jvms-3.html),[第4章](http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html)和[第6章](http: //docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html) – Holger 2015-04-02 14:50:48

+0

歡迎來到SO saroff。請避免在尋找軟件,鏈接,書籍等方面尋求幫助,因爲這些問題是[關注焦點](http://stackoverflow.com/help/on-topic)。 – 2015-04-04 13:25:14

回答

1

我需要了解字節碼和JVM是如何工作的。

是的。這可能是您使用ASM時遇到問題的主要原因。圖書館文檔很可能假定您已經熟悉這一點。瀏覽Java虛擬機規範將給你一個關於字節碼的工作原理的基本概念。

+0

我已經學會了一些字節碼基礎知識,並且在ASM中非常低級別的字節碼操作不是那樣的事情,我很害怕。但我從未聽說過這種基於事件的模型,我不知道如何正確使用它,除了教程示例。 – saroff 2015-04-02 03:58:31

+0

@saroff嗯,我可以建議的唯一的事情是:選擇看起來最接近你想要做的事情的教程示例,開始修改它,然後在遇到困難時發佈更具體的問題。 – Atsby 2015-04-02 07:30:19

2

我建議你看看使用更高級別的庫,如ByteBuddy然而,我所做的是生成Java代碼,並在運行時編譯它,例如, Java Runtime Compiler

讀取調試Java代碼通常比字節代碼更容易。