美文网首页
浅谈LLVM编译器

浅谈LLVM编译器

作者: 东京真不热 | 来源:发表于2017-05-08 12:14 被阅读0次

GCC

Xcode 最早的编译器(Xcode 3.0及之前版本)不太智能,因为当时Xcode 当前的编译器是GCC,尽管GCC是一个相对较好的编译器,但是他跟IDE 之间的匹配性并不是太好。通常,编译器分为编译器前端和编译器后端。编译器前端主要负责的是展开预处理器宏定义 并将源代码转化为中间代码。编译器后端负责生成并优化机器代码。GCC实质上是一个后端编译器,他负责将源代码编译生成二进制代码。GCC 主要用来编译代码,而不是解析代码。这意味着苹果必须编写自己的解析器来为你提供调试功能。另外,GCC 使用的是 GPL 许可协议,这使得苹果不能直使用GCC,除非苹果将Xcode 的许可协议更改为GPL。由于苹果的解析器和 GCC 的基准代码不同,GCC 和 Xcode 之间经常会出现一些不一致。

LLVM-Clang

由于上面的这个问题,苹果在Xcode 4.2 之后 同iOS 5 一起发布,默认的编译器就是 LLVM 3.0 了。虽然 LLVM 的代码生成效率不如 GCC, 但是 LLVM 具有更好的模块化和可扩展性,编译速度也是GCC的两倍以上,有许多为LLVM 而开发的编译器前端,其中比较突出就是苹果的C language(即 Clang)。Clang 支持增量编译。开始使用 Xcode 4 的时候,你就会发现这个功能比较实用。另外,clang 的模块化使得它得以非常好地支持代码重构以及 Edit All in scope 等功能。也因此 LLVM 和 IDE 的深度集成使 Xcode 在编译器遇到错误的时候可以给iOS developer 提供 Fix-it 的功能。
如下图 所示:


屏幕快照 2017-05-08 上午11.42.49.png

同时苹果从 GCC 切换到 LLVM 的另一个目的是对 Objective-C 语言拥有更大的控制权。苹果通过添加对字面量大支持使得 Objectvie-C 更加简洁,也许只有对编辑器拥有控制权,苹果才能对语言作出这种改变,同样也是 LLVM 给了苹果 这种改变 Objective-C 语言的能力。

相关文章

  • 浅谈LLVM编译器

    GCC Xcode 最早的编译器(Xcode 3.0及之前版本)不太智能,因为当时Xcode 当前的编译器是GCC...

  • 二十五、LLVM

    什么是编译器 LLVM概述 LLVM案例体验 LLVM源码 & 编译流程 1 什么是编译器? 1.1 Python...

  • oc- APP编译过程以及启动过程

    简单介绍 - LLVM编译器 苹果使用的是LLVM编译器,LLVM架构设计的非常好,主要分为前端,中间,后端 Fr...

  • iOS LLVM编译流程

    1. LLVM概念 1.1 编译器 LLVM与编译器息息相关,究竟什么是编译器呢?带着疑问往下看吧。编译器就是将一...

  • 初识LLVM&Clang-开发Xcode插件

    初识LLVM&Clang-开发Xcode插件 LLVM Xcode现在使用的编译器就是LLVM。LLVM比以前使用...

  • iOS LLVM-Clang 浅谈

    LLVM概念 LLVM官网: https://llvm.org/ 编译器架构图:image Frontend:前端...

  • iOS llvm-1

    LLVM 传统编译器 LLVM区别于传统的编译器,它前端和后端分开了 LLVM流程1.所有的代码会经过[词法分析,...

  • LLVM 之 初探

    一、编译器概述 编译器就是说将高级语言 翻译 为低级语言的程序。 二、LLVM概述   LLVM 是 构架编译器 ...

  • Bitcode功能

    LLVM是目前苹果采用的编译器工具链,Bitcode是LLVM编译器的中间代码的一种编码,LLVM的前端可以理解为...

  • 30.iOS底层学习之LLVM初了解

    本篇提纲1、LLVM简介2、编译器的一些基础知识 1.LLVM简介 基本介绍 LLVM是架构编译器的框架系统,以c...

网友评论

      本文标题:浅谈LLVM编译器

      本文链接:https://www.haomeiwen.com/subject/jjnyittx.html