LLVM - 学习笔记一

1. 工具和库

LLVM中的独立工具:

  • opt:在IR级对程序进行优化的工具,输入必须是LLVM的bitcode,生成的输出文件必须具有相同的类型。
  • llc:通过特定后端将LLVM bitcode转换成目标汇编或目标问价的工具。
  • llvm-mc:能够汇编指令并生成像ELF、MachO、PE等对象格式的目标文件,也可以反汇编相同的对象,从而转存这些指令的相应汇编信息和内部LLVM机器指令数据结构。
  • lli:LLVM IP的解释器和JIT编译器。
  • llvm-link:将几个LLVM bitcode链接在一起,产生一个包含你所有输入的LLVM bitcode。
  • llvm-as:将人工可读的LLVM IR文件转换为LLVM bitcode。
  • llvm-dis:将LLVM bitcode解码成LLVM汇编码。

LLVM中的基本库:

  • libLLVMCore:该库包含LLVM IR相关的所有逻辑:IR构造以及IR校验器,以及负责编译器中各种编译流程。
  • libLLVMAnalysis:包含几个IR分析过程,如别名分析、依赖分析和指令简化等。
  • libLLVMCodeGen:该库实现与目标目标无关的代码生成和机器级别的分析和转换。
  • libLLVMTarget:该库通过通用目标抽象来提供对目标机器信息的访问接口。
  • libLLVMX86CodeGen:该库具有特定于X86目标的代码生成信息、转换和分析过程,组成x86后端。
  • libLLVMSupport:该库包含一个通用工具集合。
  • libclang:该库实现了一个C接口,它是LLVM代码的默认实现语言。

2. Clang

1. Clang简介

Clang是LLVM编译器的c-family前端,Clang可能意指三种不同的实体:

  • 前端(在Clang库中实现)
  • 编译器驱动程序(在clang命令和Clang驱动程序库中实现)
  • 实际的编译器(在clang -cc1命令中实现)。clang -cc1中的编译器不仅是由Clang库实现,还广泛地使用其他LLVM库来实现编译器的中端、后端以及集成的汇编器。

例如,对于如下size.c示例:

#include<stdio.h>
typedef struct _PixelPacket{
   
	char rt, gt, ot;
}PixelPacket;

int main()
  • 1
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值