对于我的小爱好项目,我需要在运行时从C ++程序中发出机器代码。我有基地址0xDEADBEEF,想写这样的东西:
Assembler a((void*)0xDEADBEEF);
a.Emit() <<
Push(Reg::Eax) <<
Push(Reg::Ebx) <<
Jmp(0xFEFEFEFE);
内联汇编程序不是我的选择,因为生成的机器代码取决于程序状态。
有人知道任何现有的库吗?如果不是,从头开发并使其成为开源是否是一个好主意? (我的意思是,如果它存在,有人会使用这个库吗?)
答案 0 :(得分:8)
结帐Asmjit。这似乎是你正在寻找的东西。
答案 1 :(得分:3)
这可能是一种矫枉过正,因为它支持许多平台,有自己的中间语言,做优化等等,但http://llvm.org/似乎是上帝的尝试。
答案 2 :(得分:3)