是否有各种运行时C ++汇编程序库?

时间:2010-05-07 07:47:51

标签: c++ runtime reflection.emit assembly

对于我的小爱好项目,我需要在运行时从C ++程序中发出机器代码。我有基地址0xDEADBEEF,想写这样的东西:

Assembler a((void*)0xDEADBEEF);
a.Emit() << 
  Push(Reg::Eax) <<
  Push(Reg::Ebx) <<
  Jmp(0xFEFEFEFE);

内联汇编程序不是我的选择,因为生成的机器代码取决于程序状态。

有人知道任何现有的库吗?如果不是,从头开发并使其成为开源是否是一个好主意? (我的意思是,如果它存在,有人会使用这个库吗?)

3 个答案:

答案 0 :(得分:8)

结帐Asmjit。这似乎是你正在寻找的东西。

答案 1 :(得分:3)

这可能是一种矫枉过正,因为它支持许多平台,有自己的中间语言,做优化等等,但http://llvm.org/似乎是上帝的尝试。

答案 2 :(得分:3)

你可以使用Nicolas Capen的softwire。它现在不再受支持,因为他现在在Transgaming上使用名为SoftAsm的类似产品。仍然有点像你想要的那样。

2014年6月编辑: - 上面的sourceforge链接似乎已被删除,但似乎可以在LGPL许可here下使用。