Adding a new instruction to RISC-V back end in LLVM
8 months ago
- #RISC-V
- #LLVM
- #compiler
- 编译器被描述为一种复杂但可理解的软件,它将高级代码转换为优化的机器代码。
- 文章演示了如何在LLVM的RISC-V目标中添加一个名为'foo'的虚拟新指令,并展示该过程十分直观。
- 'foo'指令是RISC-V中的R型指令,接受两个操作数并将结果存储在寄存器中,文中提供了具体的编码细节。
- TableGen作为LLVM中的领域特定语言被引入,用于声明记录和模板,从而简化指令定义过程。
- 实现过程包括在TableGen中定义'foo'指令,指定其属性、操作数和编码,而无需直接编写C++代码。
- 创建了一个名为'dummy'的新特性标志来控制'foo'指令,遵循RISC-V的模块化扩展模型,要求在编译时显式启用。
- 文章最后鼓励读者探索编译器开发,强调只要掌握正确知识,这类任务其实触手可及。