LLVM学习笔记 - 基本流程

这篇博客详细介绍了LLVM编译器架构,重点讨论了Clang作为前端的工作流程,包括预处理、词法分析、语法分析与语义分析、以及生成LLVM IR中间代码的过程。Clang以其快速编译速度和易读的错误信息著称,能够将C/C++/Objective-C源代码转换为LLVM IR,便于进一步优化和编译。
摘要由CSDN通过智能技术生成

LLVM是模块化,可重用的编译器以及工具链技术的集合,并且LLVM就是全称并不是简称,所以说LLVM是一种编译器显然是不够准确的,她至少可以代表两个,1.LLVM编译架构 2.LLVM编译器后端

基本的编译器架构前面昨天有写过就不赘述了

在LLVM架构里面优化器是恒定不变的,需要支持新的内核,比如现在是arm x86再多一个内核,就需要调整LLVM架构的后端部分,如果再多一个编程语言则只需要对应的编译器转成LLVM IR也就是LLVM能用的中间代码即可

Clang

   Clang属于LLVM架构的前端,主要支持语言是C/C++/OC,Clang的编译速度是GCC的三倍,生成的语法树也只有GCC的五分之一,易于集成,报错也容易看懂,不像GCC报错你压根就看不懂(虽然但是,我感觉两个报错信息都不是人看的)

   Clang的编译过程

       1.预处理 一般就是#define 宏定义直接赋值比如 #define Age  4;  int li  = Age + 10; 这个预处理就是把这个Age 直接编译成 int li = 4 + 10;就是这种简单的处理,不赘述了

       2.词法分析 所谓的词法分析,就是把程序分割成一个个token,然后看看符不符合规范,具体查看程序生成了哪些token的方式:

             1.cd到程序对应的目录 

             2.clang -fmodules -E -Xclang -dump-tokens main.c 输入上述指令,其中main.c为文件名称  

             

            比如我生成的就如图所示,可以看出基本把所有代码都切成块

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值