我正在尝试学习LLVM tablegen.http://llvm.org/docs/TableGen/LangRef.html显示该field关键字存在但未解释其含义.有谁知道这意味着什么?
我在教程中找到了以下代码
class Cpu0Reg<string n> : Register<n> {
field bits<4> Num;
let Namespace = "Cpu0";
}
Run Code Online (Sandbox Code Playgroud)
我可以改为执行以下操作(注意field缺少关键字)
class Cpu0Reg<string n> : Register<n> {
bits<4> Num;
let Namespace = "Cpu0";
}
Run Code Online (Sandbox Code Playgroud)
在本教程的后面我找到了这段代码(请注意bits<20> addr,它field前面没有关键字):
class FMem<bits<8> op, dag outs, dag ins, string asmstr, list<dag> pattern,
InstrItinClass itin>: FL<op, outs, ins, asmstr, pattern, itin> {
bits<20> addr;
let Inst{19-16} = addr{19-16};
let Inst{15-0} = addr{15-0};
let DecoderMethod = "DecodeMem";
}
Run Code Online (Sandbox Code Playgroud)
那么究竟是什么之间的区别field bits<n>,并bits<n>和什么field关键词呢?
任何帮助表示赞赏.
据我所知,除非你使用位置编码的操作数(你不应该使用它),否则它什么都不做.
在我去代码潜水时关注我:
第1691行的评论表明这field是可选的.
请注意,第1696-1697行的目的是简单地删除field令牌(如果存在).field在变量中也记录了存在,该变量HasField被传递到第RecordVal1722行的构造函数中.
RecordVal初始化TyAndPrefix,一对(类型,布尔).bool存储是否field在声明中使用了前缀.field查询的存在使用RecordVal::getPrefix.
除了存在field对位置编码的操作数的禁止处理之外,该搜索没有用处.
| 归档时间: |
|
| 查看次数: |
221 次 |
| 最近记录: |