Compiler errors 一个人应该使用什么命令行从<;生成所有记录;目标>;RegisterInfo.td文件?

Compiler errors 一个人应该使用什么命令行从<;生成所有记录;目标>;RegisterInfo.td文件?,compiler-errors,compiler-construction,llvm,custom-backend,llvm-3.0,Compiler Errors,Compiler Construction,Llvm,Custom Backend,Llvm 3.0,背景资料: 到目前为止,我已经阅读了llvm教程,包括: 我目前正在为llvm的一个新目标编写代码,不允许在这里发布。我在问题的上下文中使用X86目标,因为它仍然适用于该目标。 我想做的是: 我正在尝试使用tablegen从X86RegisterInfo.td生成记录 我使用的命令行是: llvm-tblgen X86RegisterInfo.td -class=Register -I/home/des_fw/fler_llvm/llvm/include 返回此错误 X86Register

背景资料: 到目前为止,我已经阅读了llvm教程,包括:

我目前正在为llvm的一个新目标编写代码,不允许在这里发布。我在问题的上下文中使用X86目标,因为它仍然适用于该目标。 我想做的是: 我正在尝试使用tablegen从X86RegisterInfo.td生成记录 我使用的命令行是:

llvm-tblgen X86RegisterInfo.td -class=Register -I/home/des_fw/fler_llvm/llvm/include
返回此错误

X86RegisterInfo.td:16:43: error: Couldn't find class 'Register'
class X86Reg<string n, bits<16> Enc, list<Register> subregs = []> : Register<n> {
                                      ^
X86RegisterInfo.td:16:43:错误:找不到类“Register”
类X86Reg:寄存器{
^
我能够运行上面运行TableGen参考中给出的X86.td的示例命令,因此我非常确信include路径-I/....是正确的,因为如果没有以这种方式编写它,该命令将无法运行。我还在同一目录下运行我的命令,../Target/X86,作为有效的示例命令

为了让TableGen工具生成X86RegisterInfo.td文件的记录(或者通常用于XXXRegisterInfo.td,其中XXX是目标名称),应该使用什么正确的命令?

我对LLVM和定制或编写编译器都很陌生,所以我祈祷只是我不了解如何使用命令行,但是如果这可能是一个完全不同的问题,那么任何给我指明正确方向的提示都非常感谢


非常感谢!

我相信我已经找到了我自己问题的答案。命令行应该是

llvm-tblgen X86.td -gen-register-info -I/home/des_fw/fler_llvm/llvm/include
因为

“在所有LLVM后端上,LLVM tblgen二进制文件将在根TableGen文件.td上执行,该文件应包括所有其他文件。这保证了所需的所有信息都是可访问的,并且TbleGen文件中不需要重复。”()

我用了

-gen-register-info
在我的问题中提到的站点上找到的选项:

因此,整个命令行通常是

llvm-tblgen TargetNameHere.td -back-end-opt-for-specific-record-set -I/path/to/file/include/