什么是编译器?有哪些功能?

2020.07.06 -

   

编译器是一种计算机程序,可以帮助您将以高级语言编写的源代码转换为低级机器语言。它将以一种编程语言编写的代码转换为另一种语言,而无需更改代码的含义。编译器还使最终代码高效,该代码针对执行时间和内存空间进行了优化。

编译过程包括基本的转换机制和错误检测。编译器过程在前端进行词法,语法和语义分析,并在后端进行代码生成和优化。

编译器功能

  • 正确性
  • 编译速度
  • 保留正确的代码含义
  • 目标代码的速度
  • 识别合法和非法的程序构造
  • 良好的错误报告/处理
  • 代码调试帮助

编译器类型

  • 单遍编译器
  • 两遍编译器
  • 多通道编译器

单遍编译器

单次编译器源代码直接转换为机器代码。例如,Pascal语言。

两遍编译器

两遍编译器分为两部分,即。

  1. 前端:它将法律代码映射到中间表示(IR)。
  2. 后端:它将IR映射到目标计算机上

二次编译器方法还简化了重新定向过程。它还允许多个前端。

多通道编译器

多遍编译器会多次处理程序的源代码或语法树。它将一个大型程序划分为多个小型程序并进行处理。它开发了多个中间代码。所有这些多通道都将前一阶段的输出作为输入。因此,它需要更少的内存。它也被称为“宽编译器”。

编译器的任务

编译器执行的主要任务是:

  • 将源程序分解为碎片,并对其施加语法结构
  • 允许您从中间表示形式构造所需的目标程序,并创建符号表
  • 编译源代码并检测其中的错误
  • 管理所有变量和代码的存储。
  • 支持单独编译
  • 阅读,分析整个程序,并翻译成语义等效的
  • 根据机器类型将源代码转换为目标代码

编译历史

编译器历史的重要里程碑如下:

  • 1950年代初,格雷斯·默里·霍珀(Grace Murray Hopper)首次使用了“编译器”一词。
  • 第一个编译器由John Backum及其小组在1954年至1957年之间于IBM构建
  • COBOL是第一款在1960年在多个平台上编译的编程语言
  • 1960年代和1970年代对扫描和解析问题进行了研究,以提供完整的解决方案

语言处理系统的步骤

在了解编译器的概念之前,您首先需要了解与编译器一起使用的其他一些工具。

  • 预处理器:预处理器被视为编译器的一部分。它是为编译器生成输入的工具。它处理宏处理,扩充,语言扩展等。
  • 口译员:口译员就像编译器一样,可以将高级语言翻译成低级机器语言。两者之间的主要区别是解释器逐行读取和转换代码。编译器立即读取整个代码并创建机器代码。
  • 汇编程序:它将汇编语言代码转换为机器可理解的语言。汇编器的输出结果称为目标文件,该文件是机器指令以及将这些指令存储在内存中所需的数据的组合。
  • 链接器:链接器可帮助您链接和合并各种目标文件以创建可执行文件。所有这些文件可能都已使用单独的汇编器进行了编译。链接器的主要任务是在程序中搜索被调用的模块,并找出所有模块的存储位置。
  • 加载程序:加载程序是操作系统的一部分,它执行将可执行文件加载到内存中并运行它们的任务。它还计算程序的大小,该程序将创建额外的内存空间。
  • 交叉编译器:交叉编译器是一个可帮助您生成可执行代码的平台。
  • 源到源编译器:源到源编译器是将一种编程语言的源代码转换为另一种语言的源时使用的术语。

编译器构建工具

随着计算机相关技术遍及全球,引入了编译器构造工具。它们也称为编译器,编译器,编译器生成器或翻译器。

这些工具使用特定的语言或算法来指定和实现编译器的组件。

  • 扫描仪生成器:此工具将正则表达式作为输入。例如,用于Unix操作系统的LEX。
  • 语法导向的翻译引擎:这些软件工具通过使用解析树提供中间代码。它的目标是将一个或多个转换与解析树的每个节点相关联。
  • 解析器生成器:解析器生成器将语法作为输入,并自动生成可在语法帮助下解析字符流的源代码。
  • 自动代码生成器:获取中间代码并将其转换为机器语言
  • 数据流引擎:此工具有助于代码优化。在此,信息由用户提供,并且将中间代码进行比较以分析任何关系。也称为数据流分析。它可以帮助您了解如何将值从程序的一个部分传输到另一部分。

为什么要使用编译器?

  • 编译器验证整个程序,因此没有语法或语义错误
  • 可执行文件由编译器优化,因此执行速度更快
  • 允许您在内存中创建内部结构
  • 无需在生成的同一计算机上执行程序
  • 用其他语言翻译整个程序
  • 在磁盘上生成文件
  • 将文件链接为可执行格式
  • 检查语法错误和数据类型
  • 帮助您增强对语言语义的理解
  • 帮助处理语言性能问题
  • 不平凡的编程项目的机会
  • 用于构造编译器的技术也可以用于其他目的

编译器的应用

  • 编译器设计有助于全面实现高级编程语言
  • 计算机架构并行性的支持优化
  • 新的机器内存层次结构设计
  • 广泛用于翻译程序
  • 与其他软件生产力工具一起使用

总结

  • 编译器是一种计算机程序,可以帮助您将以高级语言编写的源代码转换为低级机器语言。
  • 正确性,编译速度,保留正确的代码含义是编译器设计的一些重要功能
  • 编译器分为三部分:1)单遍编译器2)两遍编译器,和3)多遍编译器
  • “编译器”是Grace Murray Hopper在1950年代初首次使用的词
  • 语言处理系统的步骤包括:预处理器,解释器,汇编器,链接器/加载器
  • 重要的编译器构建工具包括:1)扫描器生成器,2)Syntax-3)定向翻译引擎,4)解析器生成器,5)自动代码生成器
  • 编译器的主要任务是验证整个程序,因此没有语法或语义错误。

本站文章禁止转载,违者必究
阅 106
0
gaizao

编译器是一种计算机程序,可以帮助您将以高级语言编写的源代码转换为低级机器语言。它将以一种编程语言编写的代码转换 […]

湘公网安备 43011102001693号

    湘ICP备19003021号-1