我正在使用asm库在Java中构建编译器。到目前为止,我只能输出整数输出。
我想用字符串做同样的事情。有什么想法吗?
答案 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代码以执行某些操作。