LLVM每日谈之五十一 TargetMachine

本文探讨了LLVM中的TargetMachine类及其子类结构,包括LLVMTargetMachine和特定平台的TargetMachine实现。重点讲解了TargetMachine的虚拟方法,如创建DataLayout和获取TargetSubtargetInfo。此外,还提及了TargetLowering等其他目标描述类在代码组织中的位置,这些分析基于Target description classes和具体目标实现的接口。
摘要由CSDN通过智能技术生成

TargetMachine及其子类:

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

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

TargetMachine.h

class LLVMTargetMachine : public TargetMachine {
  

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

要创建一个LLVM工程,可以按照以下步骤进行: 1. 安装LLVM:首先需要安装LLVM,可以从官网(https://llvm.org/releases/)下载预编译的二进制文件或者源代码,根据操作系统和编译器版本进行选择。如果使用二进制文件,则需要将安装目录添加到系统路径中。 2. 创建工程:使用LLVM的CMake构建系统可以创建一个LLVM工程。首先创建一个目录用于存放工程文件,然后在该目录下创建一个CMakeLists.txt文件,其中包含以下内容: ``` cmake_minimum_required(VERSION 3.4.3) project(MyLLVMProject) find_package(LLVM REQUIRED CONFIG) add_definitions(${LLVM_DEFINITIONS}) include_directories(${LLVM_INCLUDE_DIRS}) add_executable(my-llvm-program main.cpp) llvm_map_components_to_libnames(llvm_libs support core irreader) target_link_libraries(my-llvm-program ${llvm_libs}) ``` 其中,`project`命令用于指定工程名称,`find_package`命令用于查找LLVM的配置信息,`add_definitions`命令用于添加LLVM的编译选项,`include_directories`命令用于包含LLVM的头文件,`add_executable`命令用于定义可执行文件,`llvm_map_components_to_libnames`命令用于将LLVM组件映射到对应的库文件,`target_link_libraries`命令用于链接LLVM库文件。 3. 编写代码:在工程目录下创建一个main.cpp文件,编写LLVM代码。 4. 编译工程:使用CMake命令生成Makefile文件,然后使用make命令进行编译。 ``` mkdir build cd build cmake .. make ``` 5. 运行程序:编译完成后,在控制台中输入`./my-llvm-program`命令即可运行LLVM程序。 以上就是创建一个LLVM工程的基本步骤。需要注意的是,LLVM的使用需要熟悉其API和IR的相关知识。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值