C++ 如何使用LLVM库编写汇编程序

C++ 如何使用LLVM库编写汇编程序,c++,assembly,x86,arm,llvm,C++,Assembly,X86,Arm,Llvm,我想为x86/arm编写一个简单的汇编程序。由于实现所有指令都会很麻烦,我认为我可以使用LLVM项目,而不使用LLVM IR 似乎正是这个特点: $echo“addl%eax,%ebx”| llvm mc-show encoding-show inst 但是我找不到任何解释如何在C++代码中使用MC的资源。 我本以为会发生类似的事情: MCBuilder=X86::MCBuilder::create(rwx\u memory\u loc); 建筑商添加(“添加”,EAX,ECX); 建筑商:A

我想为x86/arm编写一个简单的汇编程序。由于实现所有指令都会很麻烦,我认为我可以使用LLVM项目,而不使用LLVM IR

似乎正是这个特点:

$echo“addl%eax,%ebx”| llvm mc-show encoding-show inst
<>但是我找不到任何解释如何在C++代码中使用MC的资源。 我本以为会发生类似的事情:

MCBuilder=X86::MCBuilder::create(rwx\u memory\u loc);
建筑商添加(“添加”,EAX,ECX);
建筑商:AddInst(“mov”、RAX、RDX);
...

作为我可能会使用的替代方法。

汇编程序是后端的一部分。因此,您可能需要查看
lib/Target/ARM
子目录。这是LLVM中相当复杂的一部分,但是可以找到一些指导


我想,您是否有兴趣修改/添加一些asm说明?查看
*InstrInfo.td
文件。

这有帮助吗?LLVM项目已经使用LLVM机器代码实现了一个汇编器,所以请看一下。@darune感谢您的评论,但在本教程中,他不生成Assembly,而是生成LLVM IR,然后由LIB运行。我正在寻找一个低级汇编程序的钩子,也就是LLVM机器代码(MC)。@RossRidge这是我的猜测。除了LLVM doxygen和实际的源代码之外,您知道有什么好的资源吗?我喜欢您的答案,但它开始相信,不使用LLVM IR就没有简单的方法来实现它。