使用LLVM生成纯机器代码

时间:2012-08-24 19:49:10

标签: c++ c compiler-construction llvm bytecode

有没有办法从带有LLVM的模块生成“纯”机器代码?

我的意思是,我有一个模块,并希望只获得没有任何MachO或Darwin对象头的x86操作码,只需要操作码(如果可能的话,将它们重新定位到某个基址)。

2 个答案:

答案 0 :(得分:1)

我认为你正在寻找objdump。 使用objdump -d your_executable > dump_file

答案 1 :(得分:0)

执行此类操作的“标准”方法是构建可执行文件,然后根据需要提取原始位。类似于http://www.bravegnu.org/gnu-eprog/hello-arm.html

另一种方法是使用LLVM JIT API;我没有任何好的文档或示例代码,它们显示了如何以这种方式使用LLVM。也许看一下lldb中的ClangExpressionParser :: PrepareForExecution如何工作(http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Expression/ClangExpressionParser.cpp?revision=161559&view=markup)。