Java asm编译器

时间:2013-06-06 22:04:14

标签: java compiler-construction jvm bytecode java-bytecode-asm

我正在使用asm库在Java中构建编译器。到目前为止,我只能输出整数输出。

我想用字符串做同样的事情。有什么想法吗?

2 个答案:

答案 0 :(得分:1)

您是否必须自己发出原始字节码?如果没有,我有一个API(参见here),允许您使用声明性表达式树组合代码,然后将表达式编译为字节码(作为运行时调用的回调,或作为生成的方法体)类)。

使用此API编写代码的过程比使用ASM发出原始指令更自然,更简洁,例如:

call(
    field(null, Types.System.getField("out")),
    "println",
    constant("twenty-two")
)

答案 1 :(得分:-1)

我建议你用Java编写代码,编译它,然后用ASMifier代码来查看它生成的代码。

如果您使用IntelliJ和Eclipse,则可以使用ASM字节码查看器一步完成此操作。即您可以在一个窗口中使用示例Java代码,ASM代码将在其旁边生成它。

请参阅两个程序中的ASM选项卡。这将帮助您确定要编写的ASM代码以执行某些操作。

enter image description here

Eclipse ASM plugin