LLVM开发插件以及遇到问题

理解

什么是LLVM

  • LLVM项目是模块化、可重用的编译器以及工具链技术的集合
  • 创始人就说Swift之父
  • LLVM本身不是首字母缩略词,它是项目的全名

传统的编译器架构

  • GCC、LLVM、Clang
    在这里插入图片描述

在这里插入图片描述

  • 优化阶段是一个通用的阶段,它针对的是统一的LLVM IR,不论是支持新的编程语言,还是支持新的硬件设备,都不需要对优化阶段做修改
    4.相比之下,GCC的前端和后端没分得太开,前端后端耦合在了一起,所以GCC为了支持一门新的语言,或者为了支持一个新的目标平台,就会变得特别困难
    5.LLVM现在被作为实现各种静态和运行时编译语言的通用基础结构(GCC家族、Java、.NET、Python、Ruby、Scheme、Haskell、D等)

Clang

什么是Clang

1.LLVM项目的一个子项目
2.基于LLVM架构的C/C++/Objective-C编译器前端

相比于GCC,Clang具有如下优点

1.编译速度快:在某些平台下,Clang的编译速度显著的快过GCC(Debug模式下编译OC速度比GCC快3倍)
2.占用内存小:Clang生成的AST所占用的内存是GCC的五分之一左右
3.模块化设计: Clang采用基于库的模块化设计,易于IDE(开发工具)集成及其他用途的重用
4.诊断信息可读性强:在编译过程中,Clang创建并保留了大量详细的元数据,有利于调试和错误诊断
5.设计清晰简单,容易理解,易于扩展增强
在这里插入图片描述
IR–>Pass→IR属于中间代码,可以自己编写

Oc源文件的编译过程

在这里插入图片描述

词法分析

1.词法分析,生成Token:$ cla

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值