首页 文章

Clojure编译器如何生成JVM字节码?

提问于
浏览
7

Clojure编译器(它只是一个jar / java应用程序)用什么库/ api来生成JVM字节码?我很好奇,因为字节码是在运行时由java而不是javac生成的,所以它是一个输出jvm字节码的java程序 .

2 回答

  • 4

    Clojure使用名为ASM的Java库来生成字节码 . lib的一部分的一个fork嵌入到clojure项目中:https://github.com/clojure/clojure/tree/master/src/jvm/clojure/asm

  • 6

    Clojure编译器如何生成JVM字节码?

    它只是Java编程(除非他们已经将他们的代码生成器引导到Clojure ......这似乎不太可能) . 作为一个粗略的简化1,打开一个文件,按照JVM规范指定的"classfile"格式写出代码,然后关闭文件 . (或者将代码写入ByteArrayOutputStream或等效代码 . )

    对于记录,如果在运行时调用它,Clojure编译器正在做什么和Java编译器可以做什么之间没有任何定性差异 . 但显然细粒度细节会有所不同,因为语言的差异,以及各个开发者的不同想法和优先级 .


    1 - 如果您想知道代码生成器的工作原理,请阅读有关编译器编写的教科书 . 有关Clojure如何做的所有细节,请查看源代码......

相关问题