» 三阶段编译器结构

三阶段编译器结构

1980
Programmer working on three-stage compiler structure in a software development office.

现代编译器通常由三个阶段构成:前端、中端和后端。前端解析源代码,检查其正确性,并构建中间表示 (IR)。中端对 IR 进行优化。然后,后端将优化后的 IR 转换为特定 CPU 架构的目标机器码。

这种模块化的三阶段设计提供了至关重要的关注点分离。前端依赖于语言,但独立于机器;它理解特定语言(例如 C++ 或 Rust)的语法和语义。其输出,即中间表示 (IR),是一种抽象的、与机器无关的数据结构,类似于抽象语法树 (AST) 或三地址码。这将源语言与目标机器解耦。

中端在很大程度上独立于语言和机器。它接收 IR 并应用一系列优化过程,例如死代码消除、常量折叠和循环优化。由于它操作的是通用 IR,因此这些复杂的优化只需编写一次,即可应用于任何可编译为该 IR 的语言。

最后,后端依赖于机器,但独立于语言。它采用优化的 IR,执行指令选择、寄存器分配和指令调度,从而为特定目标架构(例如 x86-64 或 ARM)生成高效的机器码。这种结构使得我们能够通过编写 M 个前端和 N 个后端(而不是 M*N 个单独的编译器)来构建支持 M 种语言和 N 种目标平台的编译器。GCC 和 LLVM 等现代编译器基础设施就体现了这一原则。

UNESCO Nomenclature: 1203
- 计算机科学

类型

抽象系统

中断

基础

使用方法

广泛使用

前体

  • 早期的单片编译器设计
  • concept of abstraction in 软件 工程学
  • 早期系统中中间语言的开发
  • 便携式软件研究(例如,p-code 系统)

应用

  • 可重定向编译器(例如 GCC、llvm)
  • 不同硬件平台的交叉编译
  • 与语言无关的优化框架
  • 只需创建新的前端即可开发新的编程语言
  • 对中间表示进行操作的静态分析工具

专利:

NA

潜在的创新想法

级别需要会员

您必须是!!等级!!会员才能访问此内容。

立即加入

已经是会员? 在此登录
Related to: compiler design, front end, middle end, back end, intermediate representation, ir, optimization, code generation, modularity, GCC, llvm.

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

迎接新挑战
机械工程师、项目、工艺工程师或研发经理
有效的产品开发

可在短时间内接受新的挑战。
通过 LinkedIn 联系我
塑料金属电子集成、成本设计、GMP、人体工程学、中高容量设备和耗材、精益制造、受监管行业、CE 和 FDA、CAD、Solidworks、精益西格玛黑带、医疗 ISO 13485

我们正在寻找新的赞助商

 

您的公司或机构从事技术、科学或研究吗?
> 给我们发送消息 <

接收所有新文章
免费,无垃圾邮件,电子邮件不分发也不转售

或者您可以免费获得完整会员资格以访问所有受限制的内容>这里<

历史背景

(如果日期不详或不相关,例如 "流体力学",则对其显著出现的时间作了四舍五入的估计)。

相关发明、创新和技术原理

滚动至顶部

你可能还喜欢