如何使用 LLVM 库编写汇编程序
How to use the LLVM library to write an assembler
我想为 x86/arm 编写一个简单的汇编程序。由于实现所有指令会很麻烦,因此我认为我可以在不使用LLVM IR的情况下使用LLVM项目。
LLVM-MC似乎正是具有该功能:
$ echo "addl %eax, %ebx" | llvm-mc -show-encoding -show-inst
但是,我找不到任何解释如何在C++代码中使用MC的资源。 我本来会期望类似于:
MCBuilder builder = X86::MCBuilder::create(rwx_memory_loc);
builder.AddInst("add", EAX, ECX);
builder.AddInst("mov", RAX, RDX);
...
作为替代方案,我可能会使用模块内联程序集。
汇编程序是后端的一部分。因此,您可能需要查看lib/Target/ARM
子目录。这是LLVM中相当复杂的部分,但可以在此处找到一些指导。
我怀疑,您有兴趣修改/添加一些asm指令吗?看看*InstrInfo.td
文件。
相关文章:
- 如何创建一个CMake变量,除非显式重写,否则使用默认值
- C++:TypeDef使用元组
- 使用std::multimap迭代器创建std::list
- 从不同线程使用int64的不同字节安全吗
- 比较并显示使用最小值(a,b)和最大值(a、b)升序排列的4个数字
- 为什么在全局范围内使用"extern int a"似乎不行?
- 如何使用 LLVM 库编写汇编程序
- 为什么汇编代码因我使用的反汇编程序而异
- 使用libwebrtc-audio-Processing-Devel汇编程序
- 使用intel内联汇编程序对bigint-add进行进位编码
- 使用 LLVM 的 libc++ 时,__1 符号从何而来?
- 在std::cout之后使用std::cin时,换行符从何而来
- 尝试在cpp模块中使用汇编程序代码时发生链接器错误
- 如何强制 clang 使用 llvm 汇编程序而不是系统
- 使用可视化C++环境和"Asm"关键字作为汇编程序 IDE 的替代方法?
- 为什么以及在何处在C++中使用引用和指针
- 基例如何影响使用递归函数的哪些行
- 如何在MIPS汇编程序中使用库
- jit汇编程序,使用C函数
- 使用 x86 汇编程序访问 2D 阵列