任何高级字节码编辑器



假设我在Scala中有如下代码

object Foo {
  var functions: List[String => String] = Nil // can be any type to any type.
  def addFunc(f:String => String) = functions = f :: functions
}

在运行时,我得到了添加了一些函数的Foo。现在我想构造一个新的.class文件,在Scala中实现如下内容:

object MyObject { 
  def process1(s:String) = // call Foo.functions(1)
}

然后我想保存MyObject的字节码,可以在以后执行,即使Foo不存在。

以上只是一个例子,以显示我想做什么。我的名字是MyObject, process1,我必须生成一个可执行文件MyObject.class。不需要MyObject的源代码(它很可能是Java源代码)。

因此,在高层次上,我们需要获取Foo.function(1)的内存"快照",将该快照转换为要存储的字节码,并使用此生成MyObject的字节码。

我发现的所有字节码工程库都太低级了,所以我想知道是否有一个更高级别的库可以让我处理抽象对象,如函数等

您看过ASM的Tree模型吗?我以前只使用过Event模型,但Tree听起来正是您要找的。您可以在ASM用户指南的1.2.2节中找到概述(PDF-我认为没有HTML版本,否则我会链接它)。

我还将推荐ASM框架。AOSD'07上有一篇关于用ASM实现通用字节码转换模式的论文。章节"将两个类合并为一个"one_answers"内联方法"描述的字节码转换非常接近你的

相关内容

  • 没有找到相关文章

最新更新