美文网首页
LLVM部分概念

LLVM部分概念

作者: 分流替躺欧阳克 | 来源:发表于2019-06-23 13:03 被阅读0次

LLVM是模块化,可重用的编译器以及工具链技术的集合,用它可以给Xcode开发插件,开发语言。

传统编译器架构


传统编译器架构

LLVM架构


LLVM架构

相比于传统架构LLVM的耦合度更低,不同语言只要实现一个新的编译器前端。
要支持一个新[图片上传中...(屏幕快照 2019-06-23 12.34.25.png-ac921b-1561264477034-0)]
的硬件,只需要实现一个新的后端。都不需要对中间优化阶段做修改。

Clang:LLVM的子项目,基于LLVM架构的C/C++/Objective-C编译器前端


Clang和LLVM关系图

查看编译过程命令clang -ccc-print-phases main.m

  1. preprocessor(预处理器)替换头文件宏定义, 终端查看命令(clang -E main.m)
  2. 编译编译成IR中间代码
    • 词法分析:将代码生成一个个token(clang -fmodules -E -Xclang -dump-tokens main.m)
    • 语法分析:生成语法树(AST), 查看命令(clang -fmodules -fsyntax-only -Xclang -ast-dump main.m)
    • 生成中间代码:中间代码有三种表现形式(txt,内存格式,bitCode二进制格式)
  3. 中间代码优化(开发者可以按自己的意愿优化中间代码)
  4. 后端生成适合某个架构的机器码

我们写的代码转成机器码的过程,开发者可以自己添加Pass按自己的意愿优化代码


代码转机器码过程

相关文章

  • LLVM部分概念

    LLVM是模块化,可重用的编译器以及工具链技术的集合,用它可以给Xcode开发插件,开发语言。 传统编译器架构 L...

  • iOS LLVM-Clang 浅谈

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

  • LLVM intrinsic 介绍

    什么是 LLVM intrinsic LLVM 支持 “intrinsic function” 的概念。这些函数具...

  • 【LLVM】LLVM的安装与配置

    LLVM学习入门 入门学习LLVM开始,回顾一下之前的知识。首先,LLVM由三个部分组成, 第一部分是LLVM组件...

  • 【LLVM】编写自己的pass

    【LLVM】编写自己的pass LLVM的Pass框架是LLVM中的重要部分,多个pass一起完成了LLVM的优化...

  • LLVM & Clang 入门

    概述 LLVM包含三部分,分别是LLVM suite、Clang和Test Suite。 LLVM suite,L...

  • iOS-OC底层25:LLVM和自定义LLVM插件

    1.概念 1.LLVM?? LLVM????????是架构编译器(compiler)的框架系统,以c++编写而成,...

  • LLVM探索

    LLVM的概念 日常开发过程我们的开发工具或多或少都跟LLVM扯得上一点关系,那么什么是LLVM呢?它有什么作用呢...

  • iOS底层原理之自定义Clang插件

    前言 前文主要介绍了下LLVM和Clang相关的概念、设计思想和编译流程,本篇文章将使用LLVM和Clang实现一...

  • llvm学习日记五:使用libclang了解clang AST

    参考书:《Getting Started with LLVM Core Libraries》 抽象语法树的概念就不...

网友评论

      本文标题:LLVM部分概念

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