我正在使用 asm 库在 Java 中构建编译器。到目前为止,我只能打印到输出整数。
我想对字符串做同样的事情。有任何想法吗?
我正在使用 asm 库在 Java 中构建编译器。到目前为止,我只能打印到输出整数。
我想对字符串做同样的事情。有任何想法吗?
您是否有必要自己发出原始字节码?如果没有,我有一个 API(参见此处),它允许您使用声明性表达式树编写代码,然后将表达式编译为字节码(作为运行时调用的回调,或作为生成类的方法体)。
与使用 ASM 发出原始指令相比,使用此 API 编写代码的过程更加自然且简洁,例如:
call(
field(null, Types.System.getField("out")),
"println",
constant("twenty-two")
)
我建议您用 Java 编写代码,编译它并 ASMifier 代码以查看它生成的内容。
如果您使用 IntelliJ 和 Eclipse,您可以使用 ASM 字节码查看器一步完成。即,您可以在一个窗口中拥有示例 Java 代码,ASM 代码将在它旁边生成它。
请参阅这两个程序中的 ASM 选项卡。这将帮助您确定要编写什么 ASM 代码来做某事。