LLVM编译器的结构

 

     上世纪中叶计算机问世后,很快一种比汇编语言更抽象的语言在编程方面就异军突起了。早在1957年,Fortran作为第一种可用的高级程序设计语言问世。从那时起,成千上万种编程语言被开发出来。事实证明,所有的编译器都必须解决相同的任务,编译器的实现应该根据这些任务进行架构和设计。

      抽象的来看,llvm编译器由三部分部分组成:前端、优化器和后端。前端负责特定于语言的任务,读取源文件并计算语义分析表示,通常是带注释的抽象语法树(AST)。优化器可以选择一系列Pass,就是能够选择执行哪些优化Pass,完成不同代码的优化任务。后端从前端的结果创建优化的机器码。

区分前端、优化器和后端的动机是可重用性。假设前端和后端之间的接口定义得很好,就可以将一个C和一个Modula-2前端连接到同一个后端。或者,当有一个x86后端和一个Sparc后端,那么可以将原有的C++前端与二者相连。

 

1. 前端介绍

      前端通常执行以下任务:

相关推荐

  1. LLVM编译器结构

    2024-01-28 12:30:02       53 阅读
  2. 2312llvm,编译X86clang与llvm

    2024-01-28 12:30:02       64 阅读
  3. openharmony 编译LLVM编译器基础架构

    2024-01-28 12:30:02       56 阅读
  4. 编辑器编译器,IDE区别

    2024-01-28 12:30:02       35 阅读
  5. 编译器和 IR:LLVM IR、SPIR-V 和 MLIR

    2024-01-28 12:30:02       96 阅读
  6. 使用 LLVM clang C/C++ 编译器编译 OpenSSL 3.X库

    2024-01-28 12:30:02       50 阅读
  7. 深入理解Transformer架构编码器-解码器结构

    2024-01-28 12:30:02       43 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-01-28 12:30:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-01-28 12:30:02       100 阅读
  3. 在Django里面运行非项目文件

    2024-01-28 12:30:02       82 阅读
  4. Python语言-面向对象

    2024-01-28 12:30:02       91 阅读

热门阅读

  1. 计算机网络概述及 参考模型

    2024-01-28 12:30:02       57 阅读
  2. 关于CMAKE构建C/C++遇到的问题汇总

    2024-01-28 12:30:02       60 阅读
  3. 栈的基础知识

    2024-01-28 12:30:02       50 阅读
  4. perl 通过信号控制执行超时

    2024-01-28 12:30:02       56 阅读
  5. 设计模式 :总结篇

    2024-01-28 12:30:02       62 阅读
  6. Spring Cloud Sleuth与Zipkin详解

    2024-01-28 12:30:02       67 阅读
  7. Python在网络安全防御中的应用与实践

    2024-01-28 12:30:02       52 阅读
  8. @Scheduled笔记240124

    2024-01-28 12:30:02       49 阅读
  9. vue el-date-picker 开始日期不能大于结束日期

    2024-01-28 12:30:02       60 阅读
  10. C 练习实例49-宏#define命令练习3

    2024-01-28 12:30:02       59 阅读
  11. Git(7)之提交消息模板

    2024-01-28 12:30:02       53 阅读