使用LLVM生成纯机器代码

Generating pure machine code with LLVM

本文关键字:机器 代码 LLVM 使用      更新时间:2023-10-16

有没有一种方法可以通过LLVM从模块生成"纯"机器代码?

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

我想您正在寻找objdump。使用objdump -d your_executable > dump_file

这样做的"标准"方法是构建一个可执行文件,然后根据需要提取原始位。类似于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&视图=标记)。