内容简介:TargetMachine类作为获取目标机器相关信息的入口,作为目标机器类的父类,并不是直接被具体平台的TargetMachine类所继承的,而是首先被LLVMTargetMachine类继承:
TargetMachine及其子类:
前文 介绍了TargetMachine类,我们这篇文章简单分析下TargetMachine类及其子类。TargetMachine类位于 include/llvm/Target/TargetMachine.h 文件之中。
TargetMachine类作为获取目标机器相关信息的入口,作为目标机器类的父类,并不是直接被具体平台的TargetMachine类所继承的,而是首先被LLVMTargetMachine类继承:
class LLVMTargetMachine : public TargetMachine {
然后具体平台的TargetMachine类再继承LLVMTargetMachine类.(以X86平台为例)
lib/Target/X86/X86TargetMachine.h
class X86TargetMachine final : public LLVMTargetMachine {
所以,TargetMachine、LLVMTargetMachine和具体的目标平台的XXXTargetMachine类的关系如图所示:
图来自于: llvm::TargetMachine Class Reference
TargetMachine Virtual Methods:
基于 前文 我们已经提到的LLVM后端文档跟不上代码的变化,实际上现在除了TargetMachine类,Target description classes 中其他的类已经都不在include/llvm/Target目录之下。与此同时,在TargetMachine类中也不存在获取其他类包含的信息的接口,目前TargetMachine仅存的获取Target description classes中的类所包含信息的接口如下(其他的接口多是获取具体信息):
/// Create a DataLayout. const DataLayout createDataLayout() const { return DL; }
创建DataLayout.
virtual const TargetSubtargetInfo *getSubtargetImpl(const Function &) const { return nullptr; }
获取TargetSubtargetInfo。
其他的Target description classes(除TargetMachine和DataLayout之外):
以TargetLowering为例: TargetLowering (include/llvm/Codegen/TargetLowering.h)
TargetLoweringBase和TargetLowering都在include/llvm/Codegen/TargetLowering.h之中。而具体目标平台的XXXTargetLowering类则是在lib/Target下具体的目标平台目录之中。以X86平台为例,其则是在 lib/Target/X86/X86ISelLowering.h 之中:
// X86 Implementation of the TargetLowering interface class X86TargetLowering final : public TargetLowering {
这个文件的注释也描述的很清晰:
// This file defines the interfaces that X86 uses to lower LLVM code into a // selection DAG.
其他几个类的情况虽然有细微差别,但是情况都差不多。
所以,本文的分析,其实是结合 Target description classes 和 Implementations of the abstract description interfaces for particular targets 进行的代码分析,后端文档中六大部分的1和5.
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
尽在双11:阿里巴巴技术演进与超越
阿里巴巴集团双11技术团队 / 电子工业出版社 / 2017-4 / 79
“双 11”,诞生于杭州,成长于阿里,风行于互联网,成就于新经济,贡献于全世界。 从 2009 年淘宝商城起,双 11 已历经八年。每年的双 11 既是当年的结束,又是走向未来的起点。技术的突破创新,商业模式的更替交互,推动着双 11 迈步向前。 《尽在双11——阿里巴巴技术演进与超越》是迄今唯一由阿里巴巴集团官方出品、全面阐述双 11 八年以来在技术和商业上演进和创新历程的书籍。内容......一起来看看 《尽在双11:阿里巴巴技术演进与超越》 这本书的介绍吧!