栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

MC Layer Target

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

MC Layer Target

Target

每种类型的backends在MC成都会有一个对应Target类,位于llvmincludellvmMCTargetRegistry.h文件。

  • Target包含了对应backends的一些基础信息
  • 每个backend都会有一个单实例Target
  • Target除了包含一些最基本信息之外,另外一个重要用途:为创建MC层中各个类提供了createXXX接口,因此使用MC之前需要调用Target中createXX接口 按照需要创建相应MC组件
  • 例如反汇编时需要调用createMCDisassembler,创建MCDisassembler进行反汇编。

Target 成员

Target 成员主要分为两个部分:基本信息成员以及各种回调函数

  • 基本信息成员,例如const char *Name、const char *BackendName等等之类的。
  • 各种回调函数Fn,例如MCAsmInfoCtorFn 等,XXXXFn以Fn为主主要为createXXXX接口创建相应MC中组件使用,

XXXXFn 需要在启动时调用相应registerXXX函数进行注册,TargetRegistry.h文件中提供了各种register函数 提供XXXFn注册功能。

TargetRegistry.h文件中还提供了各种creareXXXX函数,用于创建MC中各种组件。

FirstTarget

所有注册的backend Target最终会以单向链表形式串联起来:

FirstTarget 为第一个注册Target,查找某个Target时需要进行单向链表循环访问,目前由于backend不是很多,因此单向链表能够满足需求。

TargetInfo.cpp

新增一个后端时一般都会创建对应TargetInfo.cpp文件,用于提供对应Target类单实例以及注册功能

AMDGPU MC Target 注册功能位于llvmlibTargetAMDGPUTargetInfoAMDGPUTargetInfo.cpp文件中:

提供R600和GCN两个Target 单实例注册功能。

TargetRegistry::RegisterTarget

TargetRegistry::RegisterTarget最终会将单实例Target 注册到RegisterTarget 单向链表中:

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1005176.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号