LLVM每日谈之五十一 TargetMachine

栏目: 服务器 · 编程工具 · 发布时间: 6年前

内容简介:TargetMachine类作为获取目标机器相关信息的入口,作为目标机器类的父类,并不是直接被具体平台的TargetMachine类所继承的,而是首先被LLVMTargetMachine类继承:

TargetMachine及其子类:

前文 介绍了TargetMachine类,我们这篇文章简单分析下TargetMachine类及其子类。TargetMachine类位于 include/llvm/Target/TargetMachine.h 文件之中。

TargetMachine类作为获取目标机器相关信息的入口,作为目标机器类的父类,并不是直接被具体平台的TargetMachine类所继承的,而是首先被LLVMTargetMachine类继承:

TargetMachine.h

class LLVMTargetMachine : public TargetMachine {

然后具体平台的TargetMachine类再继承LLVMTargetMachine类.(以X86平台为例)

lib/Target/X86/X86TargetMachine.h

class X86TargetMachine final : public LLVMTargetMachine {

所以,TargetMachine、LLVMTargetMachine和具体的目标平台的XXXTargetMachine类的关系如图所示:

LLVM每日谈之五十一 TargetMachine

图来自于: 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)

LLVM每日谈之五十一 TargetMachine

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 classesImplementations of the abstract description interfaces for particular targets 进行的代码分析,后端文档中六大部分的1和5.


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Perl语言编程

Perl语言编程

克里斯蒂安森 (Tom Christiansen) (作者)、Brian D Foy (作者)、Larry Wall (作者)、Jon Orwant (作者) / 苏金国 (译者)、吴爽 (译者) / 中国电力出版社 / 2014-9-1 / 148

从1991年第一版问世以来,《Perl语言编程》很快成为无可争议的Perl宝典,如今仍是这种高实用性语言的权威指南。Perl最初只是作为一个功能强大的文本处理工具,不过很快发展成为一种通用的编程语言,可以帮助成千上万的程序员、系统管理员,以及像你一样的技术爱好者轻松完成工作。 人们早已经翘首以待这本“大骆驼书”的更新,如今终于得偿所愿。在这一版中,三位颇有声望的Perl作者讲述了这种语言当前......一起来看看 《Perl语言编程》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码

html转js在线工具
html转js在线工具

html转js在线工具